GAS

GASを用いたChatWorkAPI連携 – 問い合わせ収集bot –

本記事では、実際にGASを用いたChatWork自動API連携の説明していきます。

今回は、問い合わせフォーマット(*)に合わせて問い合わせが来た際に、問い合わせとして認識し、通知を送るbotを作成していきます。具体的な利用シーンとして、お客様からの問い合わせを自動的にキャッチアップしたいという場面で活用することをイメージして作成しました。日々、たくさんの問い合わせに追われていたら役に立つはずです。
また、応用すれば自分宛のメッセージで欲しい情報だけ集めることもできると思いますので、最後まで見ていただけますと嬉しいです。

準備すること

過去の記事で前準備作業や似たような記事はまとめていますので、参考にしてみた下さい。

手順

  1. GoogleSpreadSheetsを新規作成する
  2. スクリプトエディタ(GAS)を開く
  3. コードを埋め込む
  4. ChatWrokライブラリを設定する
  5. ウェブアプリケーションとして登録する
  6. ChatWrokのwebhookに登録する
  7. 動作確認

GoogleSpreadSheetsを新規作成する

GoogleDriveのTOPページからSpreadSheetsを新規作成します。
(+新規 > Googleスプレッドシート)

GoogleSpreadSheets新規作成

スクリプトエディタ(GAS)を開く

作成したSpreadSheetsにてGASを開きます。
(ツール > スクリプトエディタ)

GAS開く

コードを埋め込む

開かれたGASに下記、サンプルコードを埋め込んでいきます。
※今回は、下記のように「■問い合わせフォーマット■」という文字列がチャット本文にあった場合に問い合わせと認知し、通知するbotとしています。

■問い合わせフォーマット■
お世話になっております。
本日は下記2点について確認させてください。

1.〇〇の件
〜〜〜〜〜〜〜〜
2.△△の件
〜〜〜〜〜〜〜〜

お手数をおかけいたしますが、よろしくお願いいたします。

では、実際にサンプルコードを埋め込んでみましょう。

新規GAS画面

サンプルコード

function doPost(e) {
  var api_token = '748f13f9eb2868a02f7f546a66de8938'; // APIトークンを設定する
  var postRoomId = 239856514;                         // メッセージを集めるチャットルームIDを設定する
  var inquiry_format = '■問い合わせフォーマット■'          // 問い合わせフォーマット識別文字

  var json = JSON.parse(e.postData.contents);
  var message = json.webhook_event.body;                   // メッセージ本文
  var roomId = json.webhook_event.room_id;                 // メッセージが送信されたチャットルームID
  var fromAccountId = json.webhook_event.from_account_id;  // メッセージを送信したアカウントID
  var messageId = json.webhook_event.message_id;           // メッセージID
  var sendTime = json.webhook_event.send_time;             // メッセージの送信時刻

  // 投稿専用チャットルームからのイベントは無視する
  if (roomId == postRoomId) return;

  // 投稿フォーマットとして認識したら通知する
  if (message.indexOf(inquiry_format) != -1) {
    // 情報を整形して投稿する
    var client = createClient(api_token);
    client.sendMessage(
      {
        room_id: postRoomId,
        body: Utilities.formatString(
          "[toall]\n[info][title]問い合わせ通知[/title][qt][qtmeta aid=%s time=%s]%s[/qt][/info]\nhttps://www.chatwork.com/#!rid%s-%s"
          , fromAccountId
          , sendTime
          , message
          , roomId
          , messageId),
      }
    );
  }
}

function createClient(api_token)
{
  return ChatWorkClient.factory(
    {
      'token': api_token,
    }
  );
}

 

可変項目

下記3点を変更いただければ、サンプルコードをそのままご活用いただけます。

  1. APIトークン
  2. メッセージを集めるチャットルームID
  3. 問い合わせフォーマット識別文字

ChatWrokライブラリを設定する

ChatWorkと連携するために専用ライブラリを設定します。
(ライブラリ > +ボタン)

1.開かれた「ライブラリの追加」にあるスクリプトID欄にIDを入力し、検索ボタンを押下
2.バージョンを選択し、追加ボタンを押下
3.ライブラリ欄にChatWorkClientが追加されていることを確認し、完了

ライブラリ追加

スクリプトID: 1nf253qsOnZ-RcdcFu1Y2v4pGwTuuDxN5EbuvKEZprBWg764tjwA5fLav

バージョン: 18

ウェブアプリケーションとして登録する

作成したプログラムをウェブアプリケーションとして利用できるように登録していきます。
(デプロイ > 新しいデプロイ)

1.開かれた「新しいデプロイ」にある新しい説明文に適当な名前をつける
2.その他は参考画像通りに選択する
3.デプロイボタンを押下する

chatwork_deploy chatwork_deploy2 chatwork_deploy3

 

 

 

ChatWrokのwebhookに登録する

実際にChatWorkと連携するためにChatWorkにWebhookの設定も行っていきます。
(アカウント情報 > サービス連携 > Webhook > 新規作成)

1.Webhookの新規作成の名前に適当な名前をつける
2.URLにウェブアプリケーションを登録した際のウェブアプリURLをコピペする
3.その他は参考画像通りに選択する
4.作成ボタンを押下する

webhook位置 webhook位置2 webhook入力内容

動作確認

実際に先ほど設定を行ったアカウントに向けて、メッセージを送り、正常に動くか確認てみましょう。
※チャット本文に問い合わせフォーマットの文字列があれば、通知し、なければ通知しないようになっているかと思います。

問い合わせBot_実行結果

上記のように設定したチャットルームに通知が届いたら成功です。
これでTO付けされたチャットを問い合わせと判別して通知するbotが完成しました。

参考サイト

Chatwork Webhookについて
chatwork で自分への TO を探せるようにする

まとめ

いかがだったでしょうか?
本記事では、問い合わせフォーマット(*)に合わせて問い合わせが来た際に、問い合わせとして認識し、通知を送るbotを作成してみました。日々の業務が少しでも楽になるツールとして活用できていたら嬉しいです。

今回の改善ポイントとしては、API実行時の実行ログが取れると保守しやすかったりしますね。次回はその点を記事にしていこうと思います。お楽しみに。

ABOUT ME
lusk
EC歴6年、26歳。 通販カート会社に2018年新卒で入社し、エンジニア、プロジェクトマネージャー、新規事業の立ち上げを経験。EC事業会社に転職し、データ活用を推進。 仕事を楽しくするためのツール作成や業務改善の仕組みを作ったりしてます。

LUSKNOTEをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む