CallConnect運営者ブログ

クラウド電話システムのCallConnectの運営メンバーによるブログです。

Webhook連携を使って通知を実装してみる

こんにちは、本間です。

先日のリリースで、CallConnectのWebhook連携の書き出し項目に以下を追加しました。

  • 通話待ち時間(wait_time)
  • 後処理時間(post_process_duration)

Webhookを使うと、最新情報を他の方へシェアしたり、自社にデータを貯めていくことができます。本記事では、実際に開発者向けのサンプルコードを含めて解説します。

電話対応をより効率的に

例えば通話の待ち時間が長いと、電話をかけたお客様を長く待たせてしまい、顧客満足度の低下につながります。後処理時間が長すぎると、その間は着信を受けられない状態になってしまいます。大人数のコールセンターであったり、リモートワークをしている場合には、問題の検知と対処が難しくなります。

そこでWebhook連携を利用し、特定の条件にマッチしたらSlack通知を送るような実装をしてみましょう。

※Webhookは通話が終わり、後処理が終わった後に送信されます。そのため、リアルタイムの情報ではないことにご注意ください。

受け取り元の作成

Webhookの受け取り先として、AWS LambdaなどのサーバーレスAPIを活用すると簡単に実現できます。

CallConnectの通話イベント発生でWebhookが動作 => AWS Lambdaで情報を受け取り => 条件に応じてSlackへ通知

AWS Lambda側で https://hogehoge.lambda-url.ap-northeast-1.on.aws/の関数 URLを有効にしたとします。そのURLが、CallConnectから送られるWebhookの受け取り口となります。そしてAWS Lambdaで受け取ったデータを、Node.jsを使い変換する実装が必要となります。

const querystring = require('querystring');
const https = require('https');
const SLACK_WEBHOOK = 'https://hooks.slack.com/services/*************';

exports.handler = async (event) => {
  const decoded = Buffer.from(event.body, 'base64').toString();
  const decodedUri = decodeURI(decoded);
  const data = querystring.parse(decodedUri);
  // data['record[wait_time]'] などでデータ取得が可能になりました。

  const promise = new Promise(function(resolve, reject) {
    // 特定の条件内だったら通知しない
    if (data['record[wait_time]'] < 30) return resolve();
  
    // Slack へ通知させる実装
    let message = "待ち時間が30秒を超えています。";

    const param = JSON.stringify({ text: message, });
    const options = {
      method: "POST",
      headers: { "Content-Type": "application/json", },
    };
    const request = https.request(SLACK_WEBHOOK, options, response => {
      resolve();
    });
    request.write(param);
    request.end();
  });
  return promise;
};

Slack通知する場合にはIncoming WebhooksのURL発行が必要です。Slack公式 をご確認ください。

この状態で、CallConnect 管理 > 連携 > Webhook にて、AWS Lambdaで作ったURLを登録しましょう。

その後、実際に通話をして特定の条件を超えた場合に、Slack通知が来ることを確認してみてください。

終わりに

先日のリリースで、Webhook でより詳しく通話の情報を受け取ることができるようになりました。

AWS Lambdaなどの簡易的なプログラムコードの実行環境を使うことにより、より便利にWebhook連携が活用できます。ぜひ本記事を参考に、Webhookの活用を検討してみてください。