
TwilioでFunctionを使って簡単なチャットボットを作成してみた
こんにちは、昴です。
今回はFunctionを使って簡単なチャットボットを作成してみます。
はじめに
Twilioは電話やSMS、チャットなどのコミュニケーション機能を組み込むためのクラウドベースのAPIプラットフォームです。TwilioではMessagingやStudioを利用して送られてきたSMSに対して、設定しておいた文章を自動で返信することができ、条件分岐などもすることが可能です。
今回はFunctionを使って簡単なチャットボットを作成してみます。中身としてはシンプルにしたいため、「時間」と「今日」が何日なのかだけ教えてくれるボットにしていきます。
設定
Function
まずTwilioのコンソールからFunctions and Assets > Servicesへ移動し、Create Serviceから新しくServiceを作成していきます。
Serviceの名前を設定し(今回は「sms-autoresponder」、NextでServiceの設定画面を開きます。設定画面ではAdd > Add Functionで新たなFunctionを作成しパスを入力します。(今回は/sms)
Functionの中身の部分では下記を入力します。
exports.handler = function(context, event, callback) {
// 受信したメッセージ
const receivedMessage = event.Body;
let responseMessage = '';
// メッセージの内容に応じて返信を変える
if (receivedMessage === 'こんにちは') {
responseMessage = 'はじめまして!Twilioボットです';
} else if (receivedMessage === '時間') {
const now = new Date();
responseMessage = `${now.getHours()}:${now.getMinutes()}です`;
} else if (receivedMessage === '今日') {
const today = new Date();
responseMessage = `${today.getFullYear()}年${today.getMonth() + 1}月${today.getDate()}日です`;
} else {
responseMessage = 'すみません、よくわかりません😅';
}
// TwiMLで応答
const twiml = new Twilio.twiml.MessagingResponse();
twiml.message(responseMessage);
callback(null, twiml);
};
内容として「こんにちは」の言葉に挨拶、「時間」という言葉に現在の時刻、「今日」という言葉に今日の日付、それ以外は分からないと回答するように記述します。
入力が完了したらSaveで保存し、Deploy Allでデプロイしていきます。
電話番号との紐づけ
次に作成したFunctionと電話番号を紐づけていきます。Phone number > Manage > Active Numbersへ移動し、SMSが利用可能な電話番号を選択します。Messaging ConfigurationのA message comes inでFunctionを選択し、作成したServiceとパスを指定します。
最後に保存して設定は完了となります。
確認
それでは確認していきます。実際にいくつかのメッセージを送っていきます。まず「こんにちは」と送ると最初なので「はじめまして!Twilioボットです」と返ってきます。
次に「時間」と送ると現在の時間を返してくれます。(今回はデフォルトのUTC)
次に「今日」と送ると今日の日付を返してくれます。
最後に関係のない言葉「テスト」と送ってみます。すると「すみません、よく分かりません」と返してくれます。
まとめ
今回はFunctionを使って簡単なチャットボットを作成してみました。
本ブログが少しでも参考になれば幸いです。
告知
Twilio/SendGridセミナーを毎月開催しています
クラスメソッドでは毎月Twilio/SendGridのセミナーを実施しています。
クラスメソッドではTwilio/SendGridのセミナーを毎月開催しております。いずれもTwilio及びSendGridを良く知らない方向けに基本的な部分から解説する内容となっておりますので、今後Twilio/SendGridの導入を検討している方や、既に導入済で改めて基本的な部分を勉強したいと考える方は、是非お気軽にご参加いただければと思います。