<aside> 💡 톡플러스는 인앱 또는 웹에서 SDK 연동으로 채팅을 간단하게 구현 할 수 있는 API 입니다

채팅 인프라 및 기능구현에 시간이 많지 않아 도입하게 됐습니다.

</aside>

인프라 구성

Untitled

기능 플로우

  1. 거래는 1대1 채팅방을 통해 진행할 수 있다.
  2. 매수 또는 매도의향이 있는 사용자가 채팅을 신청하면 채팅방이 생성된다
  3. 생성된 채팅방에는 매수자, 매도자, 어드민 이렇게 3명이 존재한다.
  4. 어드민은 시스템 메시지(사용자 나감 메시지 및 계약 체결, 아이템 사용 등 메시지)를 전송해 준다.
  5. 시스템 메시지는 hidden 타입이 아니면 각 디바이스에 푸시알림이 전송된다 (iOS, AOS sdk 를 통해 전송)
  6. 매수자 또는 매도자가 채팅방에서 나가게 되면 웹훅으로 백엔드에 요청이 온다.
  7. 사용자가 나가게된 채팅방을 프리징 하여 대화를 할 수 없는 상태로 만들고 각 유저에게 상대방의 후기를 남겨달라는 푸시 알림을 전송한다.

톡플러스 연동 api 공통 코드


...
async send(param: { method: string; url: string; data?: object }) {
    const result = {
      param,
      status: 200,
      message: null,
    };

    try {
      await Axios({
        responseType: 'json',
        method: param.method,
        headers: {
          'content-type': 'application/json',
          'api-key': this.config.TALK_PLUS.API_KEY,
          'app-id': this.config.TALK_PLUS.APP_ID,
        },
        url: param.url,
        data: param.data,
      });
    } catch (e) {
      result.status = 500;
      result.message = e.code;
    } finally {
      return result;
    }
}

...