Kore.ai SDK 라이브러리는 웹 소켓 채널을 사용하여 Kore.ai 봇 플랫폼과 통신합니다. 웹 소켓 세션을 초기화하려면, Kore.ai SDK는 다음 봇 플랫폼 엔드포인트를 사용합니다. Kore.ai 봇 플랫폼 SDK를 사용하는 경우, JWT 토큰만 생성하고 클라이언트 SDK로 전달해야 합니다.
초기화
이 섹션에서는 Kore.ai SDK가 웹 소켓을 초기화하는 방법을 설명하며 참조 전용입니다.
필수 구성 요소
클라이언트 앱이 등록되어 있고, 클라이언트 ID 및 시크릿 키가 Kore.ai 봇 빌더 도구에서 생성되어 있습니다.
1단계
JWT가 클라이언트 앱 자격 증명 및 사용자 정보를 사용하여 서버 측에서 생성됩니다. JWT가 클라이언트 앱으로 전달됩니다.
2단계
클라이언트 앱은 다음 봇 플랫폼 엔드포인트를 사용하여 봇 플랫폼에서 JWT 토큰을 accessToken
으로 교환합니다. 이 섹션에서는 다음 JSON 구문을 기반으로 /api/1.1/oAuth/token/jwtgrant
엔드포인트를 사용하여 대화에서 메시지 게시 요청 형식을 지정하는 방법을 설명합니다.
POST
https://{{APIHost}}/api/1.1/oAuth/token/jwtgrant
{ "assertion": “{{JWT Token}}”, "botInfo": { "chatBot": "{{Bot Name}}", "taskBotId": "st-f74a3430-3b19-55a3-be41-1ab1a35c4685" } )
샘플 cURL
curl 'https://{{APIHost}}/api/1.1/oAuth/token/jwtgrant' \ -H 'content-type: application/json' \ --data-binary '{"assertion":"{JWT Token}}","botInfo":{"chatBot":"{{Bot Name}}","taskBotId":"st-f74a3430-3b19-55a3-be41-1ab1a35c4685"}}
응답
다음 샘플 JSON 응답은 accessToken
및 해당 토큰과 관련된 사용자를 보여줍니다.
{ "authorization": { "accessToken": "ZdV2OL_UZ_MvHog-rs8k9KJFNWBICvquSc3jpeaRDE_-", // access token to user at /api/rtm "token_type": "bearer", "expiresDate": "2019-06-28T06:52:23.160Z", //expiry date for access token "issuedDate": "2019-02-28T06:52:23.160Z" //access token issuedDate }, "userInfo": { "userId": "u-4f6c68e0-551a-5dd9-a33a-1af3dc9cadcc", // user id which is unique for the user and can be used at bot messages api "accountId": "5c66514d09ab3565deb2e30a", // account id in which the user is present "orgId": "o-88aad7f1-0d32-5765-93d7-f40c80402114", // organization id of the user "identity": "cs-5b08ed1e-5fa7-5aaa-9c21-28bf8c90b739/admin1212@qakore.xyz", //identity of user from the channel perspective "enrollType": "free", //Enrollment type (Free/ Paid etc) "managedBy": "5c66514d09ab3565deb2e30a", //(The account id) "fName": "", //first name of the user // (fetched if the user is registered on the platform) "lName": "" //last name of the user // (fetched if the user is registered on the platform) } }
3단계
클라이언트 앱은 다음 엔드포인트를 사용하여 웹 소켓 URL을 획득합니다. 이 섹션에서는 다음 JSON 구문을 기반으로 /api/1.1/rtm/start
엔드포인트를 사용하여 웹 소켓 URL을 가져오는 요청 형식을 지정하는 방법을 설명합니다.
참고: 이 URL은 오래가지 않고 30초 후에 만료됩니다. 만료되기 전에 연결에 사용되는지 확인해야 합니다.
POST
https://{{APIHost}}/api/1.1/rtm/start
{ "botInfo": { "chatBot": "Twitter", "taskBotId": "st-f74a3430-3b19-55a3-be41-1ab1a35c4685" } }
accessToken
은 권한 부여 헤더의 bearer
매개변수에서 전달됩니다.
샘플 cURL
curl 'https://{{APIHost}}/api/1.1/rtm/start' \ -H 'content-type: application/json' \ -H 'Authorization: bearer {{accessToken}}' \ --data-binary '{"botInfo":{"chatBot":"{{Bot Name}}","taskBotId":"st-f74a3430-3b19-55a3-be41-1ab1a35c4685"}'
응답
다음 샘플 JSON 응답은 웹 소켓 URL을 보여줍니다.
{"url":"wss://xxx.yyy.com:443/rtm/bot?sid=GhKrtrEC61g7hAnmvKAVnJIHG0DS1Lzv"}
RTM 이벤트 참조
다음 실시간 이벤트는 클라이언트 앱 및 Kore.ai 봇 플랫폼 간에 교환할 수 있습니다.
RTM 클라이언트 이벤트
이 섹션에서는 웹 소켓을 통해 클라이언트 앱에서 Kore.ai 봇 플랫폼으로 전송된 RTM 클라이언트 이벤트 JSON 응답을 설명합니다. 이벤트 유형: /bot.message
설명: 사용자가 메시지를 게시할 때 실행됩니다. 다음 페이로드는 사용자가 입력한 메시지를 봇 플랫폼으로 보내는 데 사용됩니다.
{ "clientMessageId": 1466692440896, "message": { "body": "Here is the message.", "attachments": [ ] }, "resourceid": "/bot.message", "botInfo": { "chatBot": "CNN", "taskBotId": "st-8aaf0939-c34a-5976-8e2e-5c91e685b2ce" }, "id": 1466692440896 }
RTM 서버 이벤트
이 섹션에서는 웹 소켓을 통해 클라이언트 앱으로 전송된 RTM 서버 이벤트 JSON 응답을 설명합니다. 이벤트 유형: ack
설명: 클라이언트 앱에서 이벤트가 수신될 때마다 전송되는 확인 응답입니다. 다음 페이로드는 클라이언트 앱으로부터 이벤트를 확인 응답하는 데 사용됩니다.
{ "ok": true, "replyto": 1466692440896, "message": "delivered", "type": "ack" }
이벤트 유형: bot_response
설명: 클라이언트 앱에서 메시지가 처리될 때마다 전송되는 확인 응답입니다. 클라이언트 앱에서 메시지가 처리될 때마다 다음 페이로드가 전송됩니다.
{ "type": "bot_response", "from": "bot", "message": [ { "type": "text", "cInfo": { "body": " Hi. " } } ], "botInfo": { "chatBot": "CNN", "taskBotId": "st-8aaf0939-c34a-5976-8e2e-5c91e685b2ce" }, "createdOn": "2016-06-23T14:34:00.025Z", "icon": "https://devbots.kore.com/api/getMediaStream/market/f-683e82be-fc25-5921-bf41-4104780f71c2.png" }
이벤트 유형: user_message
설명: 사용자가 다른 세션에서 동시에 메시지를 입력하고 서버에 메시지를 보낼 때 클라이언트 앱으로 전송됩니다. 다음 샘플 페이로드는 클라이언트 앱으로 전송됩니다.
{ "botInfo": { "chatBot": "CNN", "taskBotId": "st-8aaf0939-c34a-5976-8e2e-5c91e685b2ce" }, "from": "self", "message": { "body": "how are you doing ", "attachments": [] }, "id": 1466692871803, "type": "user_message" }
대화 기록 가져오기
클라이언트 앱은 위의 2단계에서 생성된 액세스 토큰을 사용하여 봇 플랫폼 엔드포인트 /api/botmessages/rtm?botId={{botId}}
를 요청하여 사용자 및 봇 간에 교환된 이전 메시지를 가져옵니다. 언급된 엔드포인트의 응답을 대화창에 대화 기록을 표시하는 데 사용할 수 있습니다. 이 섹션에서는 다음 JSON 구문을 기반으로 /api/botmessages/rtm
엔드포인트를 사용하여 웹 소켓 URL을 가져오는 요청 형식을 지정하는 방법을 설명합니다.
GET https://{{APIHost}}/api/botmessages/rtm?botId={{botId}}
질의 매개변수:
- botId(필수): 봇 ID이며, 봇의 일반 설정 페이지에서 액세스할 수 있습니다.
- skip/offset(옵션): 건너뛸 메시지 수입니다.
- limit(옵션): 가져올 메시지 수입니다.
accessToken
: 헤더에 권한 부여 매개변수로 bearer와 함께 전달됩니다
샘플 cURL
curl 'https://{{APIHost}}/api/botmessages/rtm?botId={{botId}}&limit=10' \ -H 'accept: application/json' \ -H 'Authorization: bearer -{{accessToken}}' \ -H 'content-type: application/json'
샘플 응답
{ "total": 2, "moreAvailable": false, "messages": [ { "_id": "ms-8a83d099-dd93-5b6b-836b-ac77bdfe9d4a", "channels": [ { "type": "rtm" } ], "type": "incoming", "status": "sent to cs", "createdBy": "u-211f287f-17c8-51ac-b768-15c68e19afb2", "lmodifiedBy": "u-211f287f-17c8-51ac-b768-15c68e19afb2", "lmodifiedOn": "2019-12-03T05:07:44.008Z", "botId": "st-2f579dbf-9dc1-548c-972f-f19d33160a07", "orgId": "o-44741779-1971-5ab9-a0f7-aaf4e21dbe4e", "accountId": "5a675150ff600b3d7665d2a6", "isBB": 0, "ms": 1, "chnl": "rtm", "components": [ { "_id": "cp-1edc5033-a9cb-5011-8b2b-5986b7fa45cc", "cT": "text", "data": { "text": "Hi" }, "thumbnails": [ ] } ], "createdOn": "2019-12-03T05:07:44.097Z", "timestampValue": 1575349664097, "__v": 0, "lang": "en", "sessionId": "5de5eda04cdcff145752dbf6", "nodeType": 0, "tr0_I": "dg-61e5609f-76e7-5c42-b66f-7bb8b3af2433:intent0", "tr0_O": "dg-61e5609f-76e7-5c42-b66f-7bb8b3af2433:entity1:4a04988ee640428d1847fc433081be0b", "tr0_T": "0", "tr_isSS": 1, "resourceid": "messagestore", "tags": { "messageTags": [ ], "userTags": [ ], "sessionTags": [ ] } }, { "_id": "ms-80e8dbf3-ca69-5ee2-a2c1-1c6a70100c08", "channels": [ { "type": "rtm" } ], "type": "outgoing", "status": "pending", "lmodifiedOn": "2019-12-03T05:07:45.165Z", "createdBy": "u-211f287f-17c8-51ac-b768-15c68e19afb2", "components": [ { "_id": "cp-209a0641-130b-57ce-b0d3-d651691084bb", "cT": "text", "data": { "text": "Please enter the text to comment on the issue" }, "thumbnails": [ ] } ], "botId": "st-2f579dbf-9dc1-548c-972f-f19d33160a07", "orgId": "o-44741779-1971-5ab9-a0f7-aaf4e21dbe4e", "accountId": "5a675150ff600b3d7665d2a6", "tN": "Add Comment to Issue", "isBB": 0, "ms": 1, "chnl": "rtm", "lang": "en", "createdOn": "2019-12-03T05:07:45.171Z", "timestampValue": 1575349665171, "__v": 0, "sessionId": "5de5eda04cdcff145752dbf6", "resourceid": "messagestore", "tags": { "messageTags": [ ], "userTags": [ ], "sessionTags": [ ] } } ] }
다음 단계
봇 플랫폼 API 엔드포인트 및 RTM 이벤트는 클라이언트 앱 또는 Kore.ai 봇 SDK와 함께 사용할 수 있습니다. 자세한 내용은, Kore.ai 봇 SDK를 참조하세요.
Kore.ai SDK ライブラリは、Kore.ai ボット プラットフォームとの通信に Web ソケット チャネルを使用します。Web ソケット セッションを初期化するために、Kore.ai SDK は以下の ボット プラットフォームのエンド ポイントを使用します。Kore.ai ボット プラットフォーム SDK を使用する場合は、JWT トークンのみを生成してクライアント SDK に渡す必要があります。
初期化
このセクションでは、Kore.ai SDK が Web ソケット セッションを初期化する方法について説明します。これは参照用です。
必要条件
クライアント アプリが登録され、Kore.ai ボットビルダー ツールでクライアント ID とシークレット キーが生成されます。
ステップ 1
JWT は、クライアント アプリの資格情報とユーザー情報を使用してサーバー側で生成されます。JWT はクライアント アプリに渡されます。
ステップ 2
クライアント アプリは、以下のボット プラットフォームのエンドポイントを使用して、ボット プラットフォーム上の accessToken
用に JWT トークンを交換します。このセクションでは、以下の JSON 構文に基づいて、 /api/1.1/oAuth/token/jwtgrant
エンドポイントを使用してチャットにメッセージを投稿するリクエストのフォーマットについて説明します。 POST https://{{APIHost}}/api/1.1/oAuth/token/jwtgrant
{ "assertion": “{{JWT Token}}”, "botInfo": { "chatBot": "{{Bot Name}}", "taskBotId": "st-f74a3430-3b19-55a3-be41-1ab1a35c4685" } )
サンプル cURL
curl 'https://{{APIHost}}/api/1.1/oAuth/token/jwtgrant' \ -H 'content-type: application/json' \ --data-binary '{"assertion":"{JWT Token}}","botInfo":{"chatBot":"{{Bot Name}}","taskBotId":"st-f74a3430-3b19-55a3-be41-1ab1a35c4685"}}
レスポンス
以下のサンプル JSON レスポンスでは、 accessToken
およびそのトークンに関連付けられたユーザーが表示されています。
{ "authorization": { "accessToken": "ZdV2OL_UZ_MvHog-rs8k9KJFNWBICvquSc3jpeaRDE_-", // access token to user at /api/rtm "token_type": "bearer", "expiresDate": "2019-06-28T06:52:23.160Z", //expiry date for access token "issuedDate": "2019-02-28T06:52:23.160Z" //access token issuedDate }, "userInfo": { "userId": "u-4f6c68e0-551a-5dd9-a33a-1af3dc9cadcc", // user id which is unique for the user and can be used at bot messages api "accountId": "5c66514d09ab3565deb2e30a", // account id in which the user is present "orgId": "o-88aad7f1-0d32-5765-93d7-f40c80402114", // organization id of the user "identity": "cs-5b08ed1e-5fa7-5aaa-9c21-28bf8c90b739/admin1212@qakore.xyz", //identity of user from the channel perspective "enrollType": "free", //Enrollment type (Free/ Paid etc) "managedBy": "5c66514d09ab3565deb2e30a", //(The account id) "fName": "", //first name of the user // (fetched if the user is registered on the platform) "lName": "" //last name of the user // (fetched if the user is registered on the platform) } }
ステップ 3
クライアント アプリは、以下のエンドポイントを使用して Web ソケットの URL を取得します。このセクションでは、以下の JSON 構文に基づいて、 /api/1.1/rtm/start
エンドポイントを使用して Web ソケット URL を取得するリクエストのフォーマットについて説明します。
メモ: この URL は有効期間が短く、30 秒後に期限切れになります。有効期限が切れる前に、接続に使用されていることを確認する必要があります。
POST https://{{APIHost}}/api/1.1/rtm/start
{ "botInfo": { "chatBot": "Twitter", "taskBotId": "st-f74a3430-3b19-55a3-be41-1ab1a35c4685" }}
accessToken
は、承認ヘッダーの bearer
パラメータで渡されます。
サンプル cURL
curl 'https://{{APIHost}}/api/1.1/rtm/start' \ -H 'content-type: application/json' \ -H 'Authorization: bearer {{accessToken}}' \ --data-binary '{"botInfo":{"chatBot":"{{Bot Name}}","taskBotId":"st-f74a3430-3b19-55a3-be41-1ab1a35c4685"}'
レスポンス
以下の JSON レスポンスのサンプルは、Web ソケットの URL を示しています。
{"url":"wss://xxx.yyy.com:443/rtm/bot?sid=GhKrtrEC61g7hAnmvKAVnJIHG0DS1Lzv"}
RTM イベント リファレンス
クライアント アプリと Kore.ai ボット プラットフォームの間では、以下のようなリアルタイム イ ベントがやり取りされます。
RTM クライアント イベント
このセクションでは、クライアント アプリからWeb ソケット経由で Kore.ai ボット プラットフォームに送信される RTM クライアント イベントの JSON レスポンスについて説明します。イベント タイプ /bot.message
説明: ユーザーがメッセージを投稿したときにトリガーされました。以下のペイロードは、ユーザーが入力したメッセージを ボット プラットフォームに送信するために使用されます。
{ "clientMessageId": 1466692440896, "message": { "body": "Here is the message.", "attachments": [ ] }, "resourceid": "/bot.message", "botInfo": { "chatBot": "CNN", "taskBotId": "st-8aaf0939-c34a-5976-8e2e-5c91e685b2ce" }, "id": 1466692440896 }
RTM サーバー イベント
このセクションでは、Web ソケットを介してクライアント アプリに送信される RTM サーバー イベント JSON レスポンスについて説明します。イベント タイプ ack
説明:クライアント アプリからイベントを受信するたびに送信される受信確認。以下のペイロードは、クライアント アプリからのイベントを確認するために使用されます。
{ "ok": true, "replyto": 1466692440896, "message": "delivered", "type": "ack" }
イベント タイプ: bot_response
説明:クライアントアプリからのメッセージを処理するたびに送信される受信確認。以下のペイロードは、クライアント アプリからのメッセージを処理する際に送信されます。
{ "type": "bot_response", "from": "bot", "message": [ { "type": "text", "cInfo": { "body": " Hi." } } ], "botInfo": { "chatBot": "CNN", "taskBotId": "st-8aaf0939-c34a-5976-8e2e-5c91e685b2ce" }, "createdOn": "2016-06-23T14:34:00.025Z", "icon": "https://devbots.kore.com/api/getMediaStream/market/f-683e82be-fc25-5921-bf41-4104780f71c2.png" }
イベント タイプ: user_message
説明: ユーザーが別の同時セッションからサーバーにメッセージを入力して送信したときに、クライアント アプリに送信されます。以下のペイロードのサンプルが、クライアント アプリに送信されます。
{ "botInfo": { "chatBot": "CNN", "taskBotId": "st-8aaf0939-c34a-5976-8e2e-5c91e685b2ce" }, "from": "self", "message": { "body": "how are you doing ", "attachments": [] }, "id": 1466692871803, "type": "user_message" }
会話履歴の取得
クライアント アプリは、上記ステップ 2 で生成したアクセス トークンを使用して、ボット プラットフォームのエンドポイント /api/botmessages/rtm?botId={{botId}}
にリクエストし、ユーザーとチャットボットの間で交わされた過去のメッセージを取得します。このエンドポイントからのレスポンスを使用して、チャット ウィンドウに会話の履歴を表示できます。このセクションでは、以下の JSON 構文に基づいて、 /api/botmessages/rtm
エンドポイントを使用して Web ソケット URL を取得するリクエストのフォーマットについて説明します。
GET https://{{APIHost}}/api/botmessages/rtm?botId={{botId}}
クエリ パラメータ:
- botId (必須): ボット ID には、ボットの「一般設定」ページからアクセスできます。
- スキップ/オフセット(オプション): スキップするメッセージの数。
- リミット(オプション): 取得するメッセージの数。
- ヘッダーの 承認 パラメータとしてベアラーと一緒に渡される
accessToken
サンプル cURL
curl 'https://{{APIHost}}/api/botmessages/rtm?botId={{botId}}&limit=10' \ -H 'accept: application/json' \ -H 'Authorization: bearer -{{accessToken}}' \ -H 'content-type: application/json'
サンプル レスポンス
{ "total": 2, "moreAvailable": false, "messages": [ { "_id": "ms-8a83d099-dd93-5b6b-836b-ac77bdfe9d4a", "channels": [ { "type": "rtm" } ], "type": "incoming", "status": "sent to cs", "createdBy": "u-211f287f-17c8-51ac-b768-15c68e19afb2", "lmodifiedBy": "u-211f287f-17c8-51ac-b768-15c68e19afb2", "lmodifiedOn": "2019-12-03T05:07:44.008Z", "botId": "st-2f579dbf-9dc1-548c-972f-f19d33160a07", "orgId": "o-44741779-1971-5ab9-a0f7-aaf4e21dbe4e", "accountId": "5a675150ff600b3d7665d2a6", "isBB": 0, "ms": 1, "chnl": "rtm", "components": [ { "_id": "cp-1edc5033-a9cb-5011-8b2b-5986b7fa45cc", "cT": "text", "data": { "text": "Hi" }, "thumbnails": [ ] } ], "createdOn": "2019-12-03T05:07:44.097Z", "timestampValue": 1575349664097, "__v": 0, "lang": "en", "sessionId": "5de5eda04cdcff145752dbf6", "nodeType": 0, "tr0_I": "dg-61e5609f-76e7-5c42-b66f-7bb8b3af2433:intent0", "tr0_O": "dg-61e5609f-76e7-5c42-b66f-7bb8b3af2433:entity1:4a04988ee640428d1847fc433081be0b", "tr0_T": "0", "tr_isSS": 1, "resourceid": "messagestore", "tags": { "messageTags": [ ], "userTags": [ ], "sessionTags": [ ] } }, { "_id": "ms-80e8dbf3-ca69-5ee2-a2c1-1c6a70100c08", "channels": [ { "type": "rtm" } ], "type": "outgoing", "status": "pending", "lmodifiedOn": "2019-12-03T05:07:45.165Z", "createdBy": "u-211f287f-17c8-51ac-b768-15c68e19afb2", "components": [ { "_id": "cp-209a0641-130b-57ce-b0d3-d651691084bb", "cT": "text", "data": { "text": "Please enter the text to comment on the issue" }, "thumbnails": [ ] } ], "botId": "st-2f579dbf-9dc1-548c-972f-f19d33160a07", "orgId": "o-44741779-1971-5ab9-a0f7-aaf4e21dbe4e", "accountId": "5a675150ff600b3d7665d2a6", "tN": "Add Comment to Issue", "isBB": 0, "ms": 1, "chnl": "rtm", "lang": "en", "createdOn": "2019-12-03T05:07:45.171Z", "timestampValue": 1575349665171, "__v": 0, "sessionId": "5de5eda04cdcff145752dbf6", "resourceid": "messagestore", "tags": { "messageTags": [ ], "userTags": [ ], "sessionTags": [ ] } } ] }
次のステップ
ボット プラットフォーム API のエンドポイントおよび RTM イベントは、クライアント アプリまたは Kore.ai ボット SDK で使用できます。詳しくは、「Kore.ai ボット SDK」をご覧ください。
Kore.ai SDK libraries use the web socket channel to communicate with Kore.ai Bots Platform. To initialize a web socket session, the Kore.ai SDKs use the following Bots Platform endpoints. When using the Kore.ai Bots Platform SDKs, only the JWT token must be generated and passed to the client SDK.
Initializing
This section describes how the Kore.ai SDKs initialize a web socket session and is for reference only.
Prerequisites
The client app is registered and Client ID and Secret Key are generated in the Kore.ai Bot Builder tool.
Step1
The JWT is generated at server side using client app credentials and user information. The JWT is passed to the client app.
Step 2
The client app exchanges the JWT token for the accessToken
on the Bots Platform using the following Bots Platform endpoint. This section describes how to format the request to post a message in a chat with the /api/1.1/oAuth/token/jwtgrant
endpoint based on the following JSON syntax.
POST
https://{{APIHost}}/api/1.1/oAuth/token/jwtgrant
{ "assertion": “{{JWT Token}}”, "botInfo": { "chatBot": "{{Bot Name}}", "taskBotId": "st-f74a3430-3b19-55a3-be41-1ab1a35c4685" } )
Sample cURL
curl 'https://{{APIHost}}/api/1.1/oAuth/token/jwtgrant' \ -H 'content-type: application/json' \ --data-binary '{"assertion":"{JWT Token}}","botInfo":{"chatBot":"{{Bot Name}}","taskBotId":"st-f74a3430-3b19-55a3-be41-1ab1a35c4685"}}
Response
The follow sample JSON response shows the accessToken
and user associated with that token.
{ "authorization": { "accessToken": "ZdV2OL_UZ_MvHog-rs8k9KJFNWBICvquSc3jpeaRDE_-", // access token to user at /api/rtm "token_type": "bearer", "expiresDate": "2019-06-28T06:52:23.160Z", //expiry date for access token "issuedDate": "2019-02-28T06:52:23.160Z" //access token issuedDate }, "userInfo": { "userId": "u-4f6c68e0-551a-5dd9-a33a-1af3dc9cadcc", // user id which is unique for the user and can be used at bot messages api "accountId": "5c66514d09ab3565deb2e30a", // account id in which the user is present "orgId": "o-88aad7f1-0d32-5765-93d7-f40c80402114", // organization id of the user "identity": "cs-5b08ed1e-5fa7-5aaa-9c21-28bf8c90b739/admin1212@qakore.xyz", //identity of user from the channel perspective "enrollType": "free", //Enrollment type (Free/ Paid etc) "managedBy": "5c66514d09ab3565deb2e30a", //(The account id) "fName": "", //first name of the user // (fetched if the user is registered on the platform) "lName": "" //last name of the user // (fetched if the user is registered on the platform) } }
Step 3
The client app acquires the web socket URL using the following endpoint. This section describes how to format the request to get the web socket URL with the /api/1.1/rtm/start
endpoint based on the following JSON syntax.
Note: This URL is short lived and expires in 30 seconds. You must ensure it is used to connect before expiration.
POST
https://{{APIHost}}/api/1.1/rtm/start
{ "botInfo": { "chatBot": "Twitter", "taskBotId": "st-f74a3430-3b19-55a3-be41-1ab1a35c4685" } }
The accessToken
is passed in the bearer
parameter in the Authorization header.
Sample cURL
curl 'https://{{APIHost}}/api/1.1/rtm/start' \ -H 'content-type: application/json' \ -H 'Authorization: bearer {{accessToken}}' \ --data-binary '{"botInfo":{"chatBot":"{{Bot Name}}","taskBotId":"st-f74a3430-3b19-55a3-be41-1ab1a35c4685"}'
Response
The following sample JSON response shows the web socket URL.
{"url":"wss://xxx.yyy.com:443/rtm/bot?sid=GhKrtrEC61g7hAnmvKAVnJIHG0DS1Lzv"}
RTM Events Reference
The following real-time events can be exchanged between the client app and the Kore.ai Bots Platform
RTM Client Events
This section describes the RTM Client Event JSON responses sent to the Kore.ai Bots Platform from the client app over a web socket. Event Type: /bot.message
Description: Triggered when a user posts a message. The following payload is used to send a user-typed message to the Bots Platform.
{ "clientMessageId": 1466692440896, "message": { "body": "Here is the message.", "attachments": [ ] }, "resourceid": "/bot.message", "botInfo": { "chatBot": "CNN", "taskBotId": "st-8aaf0939-c34a-5976-8e2e-5c91e685b2ce" }, "id": 1466692440896 }
RTM Server Events
This section describes the RTM Server Event JSON responses sent to the client app over a web socket.
Event Type: ack
Description: An acknowledgment sent whenever an event is received from the client app. The following payload is used to acknowledge an event from the client app.
{ "ok": true, "replyto": 1466692440896, "message": "delivered", "type": "ack" }
Event Type: bot_response
Description: An acknowledgment sent whenever a message is processed from the client app. The following payload is sent when a message from the client app is processed.
{ "type": "bot_response", "from": "bot", "message": [ { "type": "text", "cInfo": { "body": " Hi. " } } ], "botInfo": { "chatBot": "CNN", "taskBotId": "st-8aaf0939-c34a-5976-8e2e-5c91e685b2ce" }, "createdOn": "2016-06-23T14:34:00.025Z", "icon": "https://devbots.kore.com/api/getMediaStream/market/f-683e82be-fc25-5921-bf41-4104780f71c2.png" }
Event Type: user_message
Description: Sent to the client app when a user enters and sends a message to the server from another simultaneous session. The following sample payload is sent to the client app.
{ "botInfo": { "chatBot": "CNN", "taskBotId": "st-8aaf0939-c34a-5976-8e2e-5c91e685b2ce" }, "from": "self", "message": { "body": "how are you doing ", "attachments": [] }, "id": 1466692871803, "type": "user_message" }
Get Conversation History
The client app requests the Bots platform endpoint /api/botmessages/rtm?botId={{botId}}
using the access token as generated in Step 2 above to get the previous messages exchanged between the user and the chatbot. The response from the mentioned endpoint can be used to display the conversation history in the chat window.
This section describes how to format the request to get the web socket URL with the /api/botmessages/rtm
endpoint based on the following JSON syntax.
GET https://{{APIHost}}/api/botmessages/rtm?botId={{botId}}
Query Parameters:
- botId(mandatory) : Bot ID, can be accessed from the bot’s General Settings page.
- skip/offset (optional) : The number of messages to be skipped.
- limit (optional) : The number of messages to be fetched.
- The
accessToken
to be passed along with bearer as the Authorization parameter in the header
Sample cURL
curl 'https://{{APIHost}}/api/botmessages/rtm?botId={{botId}}&limit=10' \ -H 'accept: application/json' \ -H 'Authorization: bearer -{{accessToken}}' \ -H 'content-type: application/json'
Sample Response
{ "total": 2, "moreAvailable": false, "messages": [ { "_id": "ms-8a83d099-dd93-5b6b-836b-ac77bdfe9d4a", "channels": [ { "type": "rtm" } ], "type": "incoming", "status": "sent to cs", "createdBy": "u-211f287f-17c8-51ac-b768-15c68e19afb2", "lmodifiedBy": "u-211f287f-17c8-51ac-b768-15c68e19afb2", "lmodifiedOn": "2019-12-03T05:07:44.008Z", "botId": "st-2f579dbf-9dc1-548c-972f-f19d33160a07", "orgId": "o-44741779-1971-5ab9-a0f7-aaf4e21dbe4e", "accountId": "5a675150ff600b3d7665d2a6", "isBB": 0, "ms": 1, "chnl": "rtm", "components": [ { "_id": "cp-1edc5033-a9cb-5011-8b2b-5986b7fa45cc", "cT": "text", "data": { "text": "Hi" }, "thumbnails": [ ] } ], "createdOn": "2019-12-03T05:07:44.097Z", "timestampValue": 1575349664097, "__v": 0, "lang": "en", "sessionId": "5de5eda04cdcff145752dbf6", "nodeType": 0, "tr0_I": "dg-61e5609f-76e7-5c42-b66f-7bb8b3af2433:intent0", "tr0_O": "dg-61e5609f-76e7-5c42-b66f-7bb8b3af2433:entity1:4a04988ee640428d1847fc433081be0b", "tr0_T": "0", "tr_isSS": 1, "resourceid": "messagestore", "tags": { "messageTags": [ ], "userTags": [ ], "sessionTags": [ ] } }, { "_id": "ms-80e8dbf3-ca69-5ee2-a2c1-1c6a70100c08", "channels": [ { "type": "rtm" } ], "type": "outgoing", "status": "pending", "lmodifiedOn": "2019-12-03T05:07:45.165Z", "createdBy": "u-211f287f-17c8-51ac-b768-15c68e19afb2", "components": [ { "_id": "cp-209a0641-130b-57ce-b0d3-d651691084bb", "cT": "text", "data": { "text": "Please enter the text to comment on the issue" }, "thumbnails": [ ] } ], "botId": "st-2f579dbf-9dc1-548c-972f-f19d33160a07", "orgId": "o-44741779-1971-5ab9-a0f7-aaf4e21dbe4e", "accountId": "5a675150ff600b3d7665d2a6", "tN": "Add Comment to Issue", "isBB": 0, "ms": 1, "chnl": "rtm", "lang": "en", "createdOn": "2019-12-03T05:07:45.171Z", "timestampValue": 1575349665171, "__v": 0, "sessionId": "5de5eda04cdcff145752dbf6", "resourceid": "messagestore", "tags": { "messageTags": [ ], "userTags": [ ], "sessionTags": [ ] } } ] }
Next Steps
The Bots Platform API endpoints and RTM events can be used with your client app or Kore.ai Bot SDKs. For more information, see the Kore.ai Bots SDK.