LANG SELRCT

Apps Script Reference  (Create: Create new Spreadsheet | Create new Apps Script

Sunday, April 28, 2019

LiveChatでチャット終了後のタグ更新をwebhookでキャッチしたい


LiveChatで利用できるWebhookのイベントは6つある

  1. chat starts
  2. chat ends
  3. chat changed
  4. visitor is queued
  5. ticket is created
  6. canned response changed


前提
  • chat ends はチャットが終わったときにデータを送る
  • chat changed はタグが更新されたときにデータを送る

今回欲しいのは

  • chat ends 後の chat changed の情報


何があれば取得できそう?
  • chat changed で送られたデータの中に「チャットが終わっている」という情報があるといい(例えば chat_ended: true みたいな)

調べてみた結果

  1. チャット中と終了後にタグを更新したログを見ると ended_timestamp がある
    • けれど
      • チャット中にタグを更新した時にも値が入る(ここがnullなら使えた)
      • チャット終了時に値が更新される
    • なので使えない
  2. チャットが終了していない場合は、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/

    Latest post

    Extracting data from Google Sheets with regular expressions

    Introduction Regular expressions are a powerful tool that can be used to extract data from text.  In Google Sheets, regular expressions ca...