Salesforce チャット REST API を試してみる
Saleforce のチャット機能って昔は Liveagent って名前だったんですよね。
名称が変更されて、チャットになりました。
ですので、昔のドキュメントとかみてると、Liveagent REST API って書いてあるかもですね。
チャット REST API 開発者ガイド
チャット REST API って何?
Salesforce のチャット機能を API 叩いて操作することができます
なので、モバイル端末や独自アプリケーションから開発により Salesforce のチャット機能を利用する際に使われます
チャット REST API は以下の流れで行います
1. チャットセッションの取得
2. チャットリクエストの送信
Salesforce のチャットエージェントに着信します
3. チャットの状況をサーバからポーリングします (定期的に API を叩いて状態を取得します)
4. チャットメッセージの送信
準備:Salesforce でチャットの設定をする
まずは画面からチャット機能が利用できないと、API も利用できないです。
チャットの設定を行います。
以下の Trailhead をやりましょう。Salesforce 上にチャット機能が構築できます。
Trailhead: Web チャットの基礎
以降では上記環境が構築されていることを前提に手順を記載していきます。
REST クライアントに Postman を利用しています。
1. チャットセッションの取得
Live Agent セッションを作成する
1. エンドポイントを確認します
設定 > チャットの設定 のページを確認します
https://gyazo.com/e7c45f6f197fa606ecc65e9f921adecb
2. 以下のエンドポイントに対して GET リクエストを送信します
エンドポイント:https://<チャット API エンドポイント>/System/SessionId
リクエストヘッダ:
X-LIVEAGENT-AFFINITY: null
X-LIVEAGENT-API-VERSION: 48 (最新にするのが Bettter)
https://gyazo.com/987bacac3231b08cb97227eb8d9cccd7
3. レスポンスとして、以下が返ります
key: (セッションキーです。次で使うので、メモしておく)
id: (これはどうでもよい)
clientPollTimeout: 40 (固定値)
affinityToken: (これも次で使うので、メモしておく)
clientPollTimeout: 40 これが恐ろしいです。どういうことかというと、セッションが 40 秒でタイムアウトするということです。つまり、40 秒毎に何かしらのリクエスト (状況確認のポーリングも可) を投げないとセッションが切れてしまうということです。
検証のために Postman とかのツールを使っている場合、ポーリングのリクエストを投げるためにも、セッションキーや affinityToken が必要となります。いちいちメモしてコピペってのはめんどくさいので、取得した結果を環境変数に格納しておく方がよいです。(やり方は別途まとめます)
2. チャットリクエストの送信
チャット訪問者のセッションを作成する
1. 以下のエンドポイントに対して POST リクエストを送信します
エンドポイント:https://<チャット API エンドポイント>/Chasitor/ChasitorInit
リクエストヘッダ:
X-LIVEAGENT-API-VERSION: 48
X-LIVEAGENT-AFFINITY: (上で取得した affinityToken)
X-LIVEAGENT-SESSION-KEY: (上で取得した key)
X-LIVEAGENT-SEQUENCE: 1
https://gyazo.com/f34d1249cd72b48ae028d127dd4831d4
リクエストボディ:
設定 > 組み込みサービスリリース > (当該の設定) > 組み込みサービスのコードスニペット のページを確認します
deploymentId, buttonId 等を確認します。
Live Agent REST API のリクエストボディ のページを参考に、リクエストボディを作成します
Sample
https://gyazo.com/9cea8f2739e430aa09f11325ec1df529
2. Salesforce のチャットエージェントに着信しますので、受け取ります
3. チャットの状況確認
チャット活動を監視する
1. 以下のエンドポイントに対して GET リクエストを送信します
エンドポイント:https://<チャット API エンドポイント>/System/Messages
リクエストヘッダ:
X-LIVEAGENT-API-VERSION: 48
X-LIVEAGENT-AFFINITY: (上で取得した affinityToken)
X-LIVEAGENT-SESSION-KEY: (上で取得した key)
https://gyazo.com/844f4e8a52d2ad67ded6976bd06f989d
40 秒以内に 1 回リクエストを送信しないと、セッションが切れます
4. メッセージの送信
ChatMessage
1. 以下のエンドポイントに対して GET リクエストを送信します
エンドポイント:https://<チャット API エンドポイント>/Chasitor/ChatMessage
リクエストヘッダ:
X-LIVEAGENT-API-VERSION: 48
X-LIVEAGENT-AFFINITY: (上で取得した affinityToken)
X-LIVEAGENT-SESSION-KEY: (上で取得した key)
https://gyazo.com/889b6c0c1fe13ee6338ca87ac4ae968d
リクエストボディに本文を入れます
https://gyazo.com/032187fe59208547298432791f4a8d1b
こんな感じです。以上。