[WIP]【Twilio】Twilioハンズオンに行ったのでまとめを書く


# 概要
大阪でのTwilio勉強会に参加したので、記録します。
まだ、纏め中なので随時足していきます。


# ハンズオン
今回は多くのハンズオンで機能体験が出来たので、その中でも残しておきたかった事をメインに書いていきます。

## 必要なこと
- アカウント作成（今回は作成済みアカウント）
- 電話実機（スマホでOK）
- 購入済み電話番号（ハンズオンでは購入から）


## TwiMLをTwilioBinsで作成
- 左上のメニューから[Runtime]を選択
![スクリーンショット 2018-05-18 11.38.57.png](https://qiita-image-store.s3.amazonaws.com/0/33165/76fc9040-a907-61e7-5fa9-6bf273afcfdd.png "スクリーンショット 2018-05-18 11.38.57.png")


- [Runtime]メニューから[TwiML Bins]を選択
![スクリーンショット 2018-05-18 11.39.06.png](https://qiita-image-store.s3.amazonaws.com/0/33165/b2379adc-05a6-e074-e2ea-699695ce7526.png "スクリーンショット 2018-05-18 11.39.06.png")


- [Create New Bins]を選択
![スクリーンショット 2018-05-18 11.39.15.png](https://qiita-image-store.s3.amazonaws.com/0/33165/184d8524-d67c-57dd-448e-8ae073175ea1.png "スクリーンショット 2018-05-18 11.39.15.png")


- FRIENDLY NAMEとTwiMLを記述して[Create]
	- FRIENDLY NAMEは日本語使用可能
	- 書き終わったら自動で書式チェックをしてくれている（Valid Voice TwiML）
![スクリーンショット 2018-05-18 11.40.10.png](https://qiita-image-store.s3.amazonaws.com/0/33165/e6cd784d-85d9-b561-fec6-00e15fe09295.png "スクリーンショット 2018-05-18 11.40.10.png")

- 出来上がったらURLをコピー
![スクリーンショット 2018-05-18 11.46.05.png](https://qiita-image-store.s3.amazonaws.com/0/33165/55a486dd-82a9-429c-2175-fc7a3c8e2a87.png "スクリーンショット 2018-05-18 11.46.05.png")


## TwiML Appsでテスト
- [#]を選択して、[ツール]⇢[TwiML Apps]を選択、[新しいTwiML Appを作成する]をクリック
![スクリーンショット 2018-05-18 11.46.35.png](https://qiita-image-store.s3.amazonaws.com/0/33165/cb8ecdb2-19f4-f2b2-47e8-406c233b53c7.png "スクリーンショット 2018-05-18 11.46.35.png")

- TwiMLAppの名前を記入して、先程作成したTwilioBinsのURLをVoiceのRequestURLに設定、最後に[保存]ボタンをクリック
![スクリーンショット 2018-05-18 11.47.05.png](https://qiita-image-store.s3.amazonaws.com/0/33165/182ba30d-769b-8f20-3b0b-fc19ece4c224.png "スクリーンショット 2018-05-18 11.47.05.png")

- TwiML Appsの画面に表示されるので、クリックして内容を確認する。
![スクリーンショット 2018-05-18 11.53.14.png](https://qiita-image-store.s3.amazonaws.com/0/33165/238cb987-4a78-7cdf-9f59-f505a383475c.png "スクリーンショット 2018-05-18 11.53.14.png")

- [発信]ボタンが表示されているので、発信して確認する
![スクリーンショット 2018-05-18 11.53.25.png](https://qiita-image-store.s3.amazonaws.com/0/33165/e49cf441-567f-d94f-2ed0-d3a9baa603ca.png "スクリーンショット 2018-05-18 11.53.25.png")

## Functionの準備

![スクリーンショット 2018-05-18 13.23.24.png](https://qiita-image-store.s3.amazonaws.com/0/33165/b751dc29-09ea-adef-ab61-f0297cf0b58f.png "スクリーンショット 2018-05-18 13.23.24.png")

![スクリーンショット 2018-05-18 13.23.36.png](https://qiita-image-store.s3.amazonaws.com/0/33165/319a3fb5-d142-63c7-187e-529c755f517b.png "スクリーンショット 2018-05-18 13.23.36.png")

![スクリーンショット 2018-05-18 13.23.48.png](https://qiita-image-store.s3.amazonaws.com/0/33165/d8f717f9-c332-1b3f-2431-c10ad44f85db.png "スクリーンショット 2018-05-18 13.23.48.png")

![スクリーンショット 2018-05-18 13.23.54.png](https://qiita-image-store.s3.amazonaws.com/0/33165/8ff1f4c0-1197-8cd0-d45f-f22e7b3682e9.png "スクリーンショット 2018-05-18 13.23.54.png")

![スクリーンショット 2018-05-18 13.25.12.png](https://qiita-image-store.s3.amazonaws.com/0/33165/fba5c284-3fec-ed50-996a-a29eacd1e257.png "スクリーンショット 2018-05-18 13.25.12.png")

![スクリーンショット 2018-05-18 13.26.09.png](https://qiita-image-store.s3.amazonaws.com/0/33165/e66f45f5-322e-7752-bb4d-f0b0058b7c01.png "スクリーンショット 2018-05-18 13.26.09.png")

![スクリーンショット 2018-05-18 13.26.32.png](https://qiita-image-store.s3.amazonaws.com/0/33165/32453065-31f0-e99b-4f8e-1ec498ef3c07.png "スクリーンショット 2018-05-18 13.26.32.png")

![スクリーンショット 2018-05-18 13.29.43.png](https://qiita-image-store.s3.amazonaws.com/0/33165/563f6e9c-ba69-2942-a4a0-dd645a42e189.png "スクリーンショット 2018-05-18 13.29.43.png")

![スクリーンショット 2018-05-18 13.34.05.png](https://qiita-image-store.s3.amazonaws.com/0/33165/204591da-3cdd-6e64-1d8f-bbbe6b403c27.png "スクリーンショット 2018-05-18 13.34.05.png")

![スクリーンショット 2018-05-18 13.52.59.png](https://qiita-image-store.s3.amazonaws.com/0/33165/a0449494-aa38-2079-4c73-f8afbd80eaae.png "スクリーンショット 2018-05-18 13.52.59.png")

![スクリーンショット 2018-05-18 13.33.43.png](https://qiita-image-store.s3.amazonaws.com/0/33165/98f6ed21-b803-8422-6498-866870b038aa.png "スクリーンショット 2018-05-18 13.33.43.png")

## 音声IVR



# ハンズオン以外でのお話
## Voice
### コールの状態 
#### コールステータス一覧
- queued：twilioの発信キューに入ってる状態
- initiated：キャリアに向けて発信作業中
- ringing：相手先を呼び出し中
- in-progress：電話中
- completed：電話終了

#### コール結果
- completed：相手が対応し、通話が正常に終了
- busy：相手からっビジー信号を発信
- faild：通話を接続できなかった
- no answer：相手が対応せず、通話が終了
- canseled：queuedまたはringing中に、通話がキャンセル
- 電話を掛けてすぐはキューに入り、Twilioが1秒に一回キューから取り出して接続を行う
- 着信拒否の場合、コール結果のcanseledを返さないパターンがある
	- キャリアごとの仕様のためどうしようもない
	- twilioはその場合、何度も繋げに行く
	- つながらない場合は、別ルートで再度繋げに行く
		- 他国経由、非通知などでかかってくる
- コールステータスをREST APIで変更することが出来る
	- 強制的に通話を切ることが出来る
- 通話中に第三者が割り込みをすることができる
	- [Twilioを使って、二者間の通話に別の音声を挿入する](https://qiita.com/mobilebiz/items/4490fe5a03c5192ce06f)

## キュー


## IVR
- 
- 音声認識もできる
	- ただし、15秒3円と高め

## ACD
- 一斉着信
- 順次着信
	- <Dial>タグにsequential='true'を追記
	- sequentialは隠しパラメータ

## VoIPクライアント
[通話環境のテスト](https://networktest.twilio.com)

## Assets
- ファイルストレージ
	- S3同様にWebサーバ化することが出来る

## SIPレジストレーション
- SIPサーバなしで

## コールログ


## SMS
- 050の口はないので、国際SMSを送る（米国推奨）


## FAX
### 送信
- PDF、TIFFが使用可能
- 原稿サイズは”縦”のA4、またはUSレターサイズ
- 画像の指定可能
- ファイルはAssetsに配置して読み込む
- StatusCallbackで送信ステータスを取得可能

### 受信
- 電話番号の設定でWebhookを指定





# まとめ
今回は特にBins、App、Functionが魅力的でした。

- 今までは転送テストは発信実機から受信実機で試していただが、Twilioからの受信テストが出来る事がわかった。

今日１日ご教授頂きました、[高橋](https://qiita.com/mobilebiz)さん、ありがとうございました。