Twilio REST API を使用して DataSpider から電話をかける

# やりたいこと

Twilio REST API を使用して、DataSpider から電話をかけます。

# 必要なもの・こと

以下のものを用意してください。

* Twilio アカウント
 * Twilio 電話番号
* DataSpider Servista
 * REST アダプタ

また、用意した Twilio アカウントの「検証済み電話番号」に自分の電話番号を登録しておいてください。

# スクリプト完成図

このような DataSpider のスクリプトを作ります。

![image](https://qiita-image-store.s3.amazonaws.com/0/9734/99a01f48-32e4-f73d-d970-086c1ee34bce.png)

あっさりしていて、いいですね。

# スクリプト作成手順

早速作っていきましょう。

## スクリプトをつくる

1. DataSpider Studio を起動し、ログインして、デザイナを開きます。
2. 任意のプロジェクトとスクリプトを作成します。プロジェクト名は「Twilio」、スクリプト名は「電話をかける」とでもするとよいでしょう。

![image](https://qiita-image-store.s3.amazonaws.com/0/9734/4f013a58-1e71-cf03-4bf7-c1154ee1c95c.png)

## REST アダプタを配置する

スクリプトを作成したら、REST アダプタの POST 実行処理で、Twilio の REST API をコールします。

1. 画面右側にある [ツールパレット] の [ネットワーク] カテゴリから、REST アダプタの **POST 実行**処理をドラッグ＆ドロップして、スクリプトキャンバスに配置します。
2. 処理を配置すると開く設定ダイアログで、「[Twilio Docs: Twilio REST API](https://jp.twilio.com/docs/api/rest)」および「[Twilio Docs: REST API: 通話を開始する](https://jp.twilio.com/docs/api/rest/making-calls)」を参考にしながら、以下のように設定します。

### [必須設定] タブ

※[接続先] の「Twilio接続設定」については後ほど説明します。

![image](https://qiita-image-store.s3.amazonaws.com/0/9734/913d7a46-1b30-98d1-15a6-1ac54eb6495b.png)

### [リクエスト設定] タブ

![image](https://qiita-image-store.s3.amazonaws.com/0/9734/edc04980-b1f8-11f7-208d-785df4c9f76c.png)

### [認証設定] タブ

![image](https://qiita-image-store.s3.amazonaws.com/0/9734/ec27b249-5539-c69d-469c-2ef55dc09f7a.png)

### Twilio接続設定

[必須設定] タブの [接続先] から、追加して、選択します。

![image](https://qiita-image-store.s3.amazonaws.com/0/9734/afcd65c6-8903-4e00-7192-9424bcf678db.png)

ここで説明していないタブは、デフォルトでオッケーです。

## 電話番号と TwiML の URL をマッピングする

1. [ツールパレット] の [変換] カテゴリから、[基本] の**マッピング**処理をドラッグ＆ドロップして、スクリプトキャンバスに配置します。
2. 配置したマッピング処理のアイコンをダブルクリックしてマッピングキャンバスを開き、以下のようにマッピングします。

![image](https://qiita-image-store.s3.amazonaws.com/0/9734/7fa049c3-67f1-df5a-47ea-c02bd55eba4b.png)  

マッピングしているアイコンは、マッピングキャンバス右側の [ツールパレット] から、[文字列] カテゴリの [基本] - [一行文字列] を配置して設定します。
設定する値は、それぞれ以下の通りです。  

|項目|値|
|:-----|:-----|
|From|Twilio の電話番号を E. 164 番号（ハイフン抜き）で|
|To|自分の電話の電話番号を E. 164 番号（ハイフン抜き）で|
|Url|https://demo.twilio.com/welcome/voice/ja/|
参考 : E.164番号とは - https://www.nic.ad.jp/ja/basics/terms/E164.html

## 完成！

最後に、データフローとプロセスフローをつないで、完成です。

![image](https://qiita-image-store.s3.amazonaws.com/0/9734/99a01f48-32e4-f73d-d970-086c1ee34bce.png)

スクリプトを実行すると、自分の電話に電話がかかってきます！
「**VOICE URL の設定を変更することでこの文章を変更できます。仕様のことでご不明点が御座いましたらご連絡ください。**」という音声が流れます。（2016/04/28 時点）

# 応用編 : Twimlbin を使って好きな音声を流す

[Twimlbin](http://twimlbin.com/) という、TwiML をホスティングしてくれるサービスを使うことで、電話で流す音声（テキスト）を任意のものに差し替えることができます。

* [Twimlbin - A Place To Toss Your Twiml](http://twimlbin.com/)

すごく簡単なので、ぜひ使ってみてください。

## Twimlbin の使用例

たとえば、私が作った以下の TwiML の公開 URL を、先に入力した「https://demo.twilio.com/welcome/voice/ja/ 」のかわりに、Mapper で「Url」要素にマッピングしてみてください。

http://twimlbin.com/external/f1bdfbdbb57f35a439d91902360d3c6c

スクリプトを実行すると、かかってきた電話から「**データスパイダーからお電話しました！ Happy twilio!**」という音声が流れるはずです！

## TwiML の書き方

TwiML の書き方は Twilio の公式ドキュメントを参照してください。

* [Twilio Docs: TwiML Reference](https://jp.twilio.com/docs/api/twiml)

単純なので、試してみればすぐに理解できると思います。

# まとめ

* [DataSpider Servista](https://www.appresso.com/servista/) の REST アダプタで Twilio の REST API をコールすることで、簡単に電話をかけることができます。
* [Twimlbin](http://twimlbin.com/) を使えば、（TwiML を配置して）簡単に任意の音声を流すことができます。
* [Twilio の REST API](https://jp.twilio.com/docs/api/rest) には様々なものがあります。電話をかける以外にも、この記事と同様の要領で様々なことができます。