Help us understand the problem. What is going on with this article?

Twilio Autopilotをさわってみた

More than 1 year has passed since last update.

Twilio AutopilotからAWS API Gatewayをコールしてみました。

やること

電話に話しかけるとTwilioがAPI Gateway経由でサーバの起動停止をするLambdaを呼び出す仕組みをつくってみます。

注)認証的なものは入れてません。

必要なもの

  • twilioアカウント
  • AWSアカウント

手順概要

  1. [AWS] lambdaを作成する
  2. [AWS] apiを作成する
  3. [Twilio] virtual assistantを作成する
  4. [Twilio] taskを作成する
  5. [Twilio] sampleを作成して、modelをビルドする
  6. [Twilio] 電話番号にvirtual assistantを紐づける
  7. [Twilio] テストする

1. [AWS] lambdaを作成する

import boto3
import json

INSTANCE_ID = 'I-*****************'
ec2 = boto3.client('ec2')


def lambda_handler(event, context):
    command = get_command(event)
    reply = ''

    if command == 'start':
        res = ec2.start_instances(
            InstanceIds=[INSTANCE_ID]
        )
        reply = 'The server is starting.'
    elif command == 'stop':
        res = ec2.stop_instances(
            InstanceIds=[INSTANCE_ID]
        )
        reply = 'The server is stopping'
    else:
        reply = 'Please tell me start or stop.'

    body = {
            'actions': [
                {
                    'say': reply
                }
            ]
        }

    return({
        'isBase64Encoded': False,
        'statusCode': 200,
        'headers': {},
        'body': json.dumps(body)
    })


def get_command(event):
    try:
        command = event['pathParameters']['command']
    except KeyError as err:
        command = 'other'
    return command

2. [AWS] apiを作成する

API Gatewayでapiを作成してデプロイします。

項目
メソッド POST
Lambdaプロキシ統合の使用 ON
ステージ名 prod

auto2_1_api.png

3. [Twilio] virtual assistantを作成する

twilioのコンソールから[Autopilot] - [Create a New Assistant]を選択して、virtual assistantを作成します。
auto3.png

4. [Twilio] taskを作成する

Taskを3個作成します。
auto4_1.png

initial

{
    "actions": [
        {
            "say": "Do you want to strat a hoge server or stop a hoge server?"
        },
        {
            "listen": true
        }
    ]
}

start

{
    "actions": [
        {
            "redirect": "https://**********.execute-api.us-east-1.amazonaws.com/prod/start"
        }
    ]
}

stop

{
    "actions": [
        {
            "redirect": "https://**********.execute-api.us-east-1.amazonaws.com/prod/stop"
        }
    ]
}

5. [Twilio] sampleを作成して、modelをビルドする

auto5_1.png

auto5_2.png

auto5_3.png

6. [Twilio] 電話番号にvirtual assistantを紐づける

[Channels] - [Programmable Voice]のVOICE URLをコピーします。

auto6_1.png

下図の赤枠にペーストして、電話番号と紐づけます。

auto6_2.png

7. [Twilio] テストする

Twilioで購入した電話番号に電話して、「start」か「stop」を指示します。

雑感

その1
発音が悪いのか、stopの方しか認識してくれませんでした。早く日本語に対応しないかな。。

その2
最近のtwilioはSendGridを買収したりと電話の枠を超えてコミュニケーション分野全体に手を広げているように見えます。そのうちSlackやFacebookを飲み込んだりして。。。

sirotosiko
クラウドエンジニアです。徳丸基礎試験合格・AWS認定12種・GCP認定5種・Azure認定1種保有・金財CBT試験3種類合格。FinTechベンチャーで働いています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした