LiveChatで利用できるWebhookのイベントは6つある
- chat starts
- chat ends
- chat changed
- visitor is queued
- ticket is created
- canned response changed
前提
- chat ends はチャットが終わったときにデータを送る
- chat changed はタグが更新されたときにデータを送る
今回欲しいのは
- chat ends 後の chat changed の情報
何があれば取得できそう?
- chat changed で送られたデータの中に「チャットが終わっている」という情報があるといい(例えば chat_ended: true みたいな)
調べてみた結果
- チャット中と終了後にタグを更新したログを見ると ended_timestamp がある
- けれど
- チャット中にタグを更新した時にも値が入る(ここがnullなら使えた)
- チャット終了時に値が更新される
- なので使えない
- チャットが終了していない場合は、chat の中に events が存在しない
- 1の情報は使えないので使えるとしたらこれ
2でやってみる
コード.gs
function doPost(e) {
var contents = e.postData.contents
console.log(contents);
var jobj = JSON.parse(contents);
var isEnded = judgeEnded(jobj);
if(isEnded) {
var chatId = jobj['chat']['id'];
var tags = jobj['chat']['tags'];
doSomething(chatId, tags);
} else {
console.log('not ended');
}
}
function judgeEnded(jobj) {
var events = jobj['chat']['events'];
if(events === undefined) {
return false;
}
return true;
}
function doSomething(chatId, tags) {
console.log(["ended!", chatId, tags]);
}
|
意訳この機能がやること 送られてきたデータからcontentsを取得して ログに出す JSONからJavaScriptのオブジェクトに変換する chatが終わっているかどうかtrue/falseで判定する chatが終わっていたら idを取得して tagsを取得して それを使って任意の処理をする chatが終わっていなければ not endedをログに出す この機能がやること 受け取ったデータの中の events を取得する eventsが見つからなければ falseを返す 見つかれば trueを返す この機能がやること 受け取ったchatId, tagsをログに出す |
関連記事
LiveChatのwebhookを使ってみる
LiveChatのwebhookを使ってみる(チャット終了後にタグを更新する)
LiveChatのwebhookを使ってみる(チャット中と終了後にタグを更新したログ)
参考
Building webhook integration
https://developers.livechatinc.com/docs/build-integration/