Twilio CLI Serverless Pluginを使って、Twilioで受信したFAXをkintoneに格納します。
以下の環境が必要です。
- Twilioアカウント(アカウントの作成方法→こちら)
- 着信用電話番号(Twilioで購入した050番号)
- kintoneアカウント
- Twilio CLI(インストール方法→こちら)
- Serverless Plugin(インストール方法→こちら)
git clone https://github.com/mobilebiz/fax2kintone-function.git
cd fax2kintone-function
npm install
cp .env.sample .env
cp assets/twiml.sample.xml assets/twiml.xml
assetsディレクトリの中に、FAX-APP.zip
というテンプレートアプリがあるので、それをkintoneに読み込みます。
テンプレートアプリの読み込み方法については、こちらをご覧ください。
アプリが読み込めたら、次にAPIトークンを生成してください。今回使うAPIトークンでは、レコード閲覧の他に、レコード追加の権限が必要になりますので、チェックを入れておきます。
APIトークンの生成方法は、こちらを参考にしてください。なお、作成したAPIトークンはメモ帳などに保存しておいてください。
今回のアプリには以下の3つのフィールドが定義されています(フィールドコードは変更しないでください)。
フィールド名 | フィールドコード | 説明 |
---|---|---|
受信日時 | receivedDate | FAXが格納された日時が自動的に設定されます |
発信番号 | from_ | 発信者の電話番号がE.164形式で保存されます |
添付ファイル | 受信したFAXデータがPDF形式で保存されます |
エディタで.env
ファイルを開き、以下の項目を編集します。
【注意】先頭の2行(ACCOUNT_SIDとAUTH_TOKEN)は編集しないようにしてください。
項目名 | 設定内容 |
---|---|
MASTER_ACCOUNT_SID | ACから始まるTwilioのAccountSid |
KINTONE_DOMAIN | ご自分のkintoneのサブドメイン名(xxxxx.cybozu.comのxxxxxの部分) |
KINTONE_APP_ID | 作成したkintoneのアプリID(アプリIDは、URLから判別可能です。https://(サブドメイン名).cybozu.com/k/(アプリのID)/) |
KINTONE_API_TOKEN | 先程控えておいたAPIトークン |
以下のコマンドでローカル実行します。
npm start
(中略)
┌────────────────────────────────────────────────────────────────────────┐
│ │
│ Twilio functions available: │
│ ├── [protected] /del-faxes | http://localhost:3000/del-faxes │
│ └── [protected] /save2kintone | http://localhost:3000/save2kintone │
│ │
│ Twilio assets available: │
│ ├── /FAX-APP.zip | http://localhost:3000/FAX-APP.zip │
│ ├── /fax-sample.pdf | http://localhost:3000/fax-sample.pdf │
│ ├── /twiml.sample.xml | http://localhost:3000/twiml.sample.xml │
│ └── /twiml.xml | http://localhost:3000/twiml.xml │
│ │
└────────────────────────────────────────────────────────────────────────┘
上記のようにローカル起動が成功したら、以下のURLをブラウザで開きます。
http://localhost:3000/save2kintone?FaxStatus=received
画面上にOK
と表示されて、kintoneアプリ側には1件データが登録されていれば成功です。
ローカル実行を終了するには、Ctrl-C
を押します。
以下のコマンドでサーバーにデプロイします。
twilio serverless:deploy
(中略)
✔ Serverless project successfully deployed
Deployment Details
Domain: fax2kintone-function-XXXX-dev.twil.io
Service:
fax2kintone-function (ZSxxxxxxxxxxxxxxxxxxxxxxx)
Environment:
dev (ZExxxxxxxxxxxxxxxxxxxxxxx)
Build SID:
ZBxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
View Live Logs:
https://www.twilio.com/console/assets/api/ZSxxxxxxxxxxxxxxxxxxxxxxxx/environment/ZExxxxxxxxxxxxxxxxxxxxxxxxxxxx
Functions:
[protected] https://fax2kintone-function-XXXX-dev.twil.io/del-faxes
[protected] https://fax2kintone-function-XXXX-dev.twil.io/save2kintone
Assets:
https://fax2kintone-function-XXXX-dev.twil.io/FAX-APP.zip
https://fax2kintone-function-XXXX-dev.twil.io/fax-sample.pdf
https://fax2kintone-function-XXXX-dev.twil.io/twiml.sample.xml
https://fax2kintone-function-XXXX-dev.twil.io/twiml.xml
表示された結果の中の、Functions項目にあるsave2kintoneへのリンクURLをメモ帳に保存してください。
エディタでassets/twiml.xml
を開きます。
3行目に書かれているaction=
で指定しているURLを上でメモしたリンクURLに書き換えます(シングルクォーテーションを削除しないように気をつけてください)。
編集が完了したら、上書き保存します。
twiml.xml
を編集したので、もう一度以下のコマンドでデプロイします。
twilio serverless:deploy
(中略)
Functions:
[protected] https://fax2kintone-function-XXXX-dev.twil.io/del-faxes
[protected] https://fax2kintone-function-XXXX-dev.twil.io/save2kintone
Assets:
https://fax2kintone-function-XXXX-dev.twil.io/FAX-APP.zip
https://fax2kintone-function-XXXX-dev.twil.io/fax-sample.pdf
https://fax2kintone-function-XXXX-dev.twil.io/twiml.sample.xml
https://fax2kintone-function-XXXX-dev.twil.io/twiml.xml
デプロイが完了したら、最後に表示されたtwiml.xml
へのリンクURLをメモ帳に保存してください。
Twilioの管理コンソールにログインします。
- スライドメニューからPhone Numbersを選択し、番号の管理 > アクティブな電話番号を選択します。
- 購入済みの電話番号の一覧から、今回FAX着信に利用する電話番号を選択して設定画面を開きます(電話番号がリンクになっています)。
- Voice & Faxセクションの中の、ACCESPT INCOMINGを、Faxesに変更します。
- A FAX COMES INのプルダウンをWebhookにし、その右側の欄に先程メモしたtwiml.xmlのリンクURLを記載します。さらに右側のプルダウンからHTTP GETを選択します。
- Saveボタンを押します。
以上ですべての設定が完了です。
設定した電話番号にFAXを送信してみて、kintoneに格納されることを確認してください。
不明な点や問題が発生したら、このGithubのIssuesまで。