問い合わせが来たらFAXで受信。。。というネタを書こうと思ったらTwilio Fax終了のお知らせ

この投稿は、[Twilio Advent Calendar 2020](https://qiita.com/advent-calendar/2020/twilio)の21日目の記事になります。

# はじめに
タイトルの通り、最初「Webの問い合わせフォームで問い合わせが入ったらその内容をFAXで送る」という内容の投稿をしようと思ってたら、これですよ。

【重要】Twilio Programmable Fax サービス終了について
https://cloudapi.kddi-web.com/news/latest/twilio-programmable-fax-end-of-life-on-december-17-2021

とはいえ折角思いついた話だし、書くだけ書いてみるか、と。

# 何故わざわざWebの問い合わせをFAXで送るなんてことをする？
こんな投稿を目にしたのがキッカケです。
<dl>
<dt>投稿主</dt>
<dd>ロケ弁で有名な金兵衛の注文フォームphpで作られてるっぽいんだけど、プリントアウト後に、FAXで注文。折り返し電話で確定らしい。民間も古い業界だとそうなのか。このUI見たことないな。</dd>
<dt>コメント</dt>
<dd>弁当業界は普段パソコンの前にいないしよく分かるオペレーション。1回この辺のシステム考えて作ったことあったな。気軽にDXガーっていう人は現場を見た方がいいと思うなー</dd>
</dl>
確かにサイトに行ってみると
https://www.kinbe.co.jp/order_form/odr.php
なるほど問い合わせフォームの体裁でブラウザから入力できるが、サブミットしてもどこかにデータが送信されるわけではなく入力した内容がそのまま画面に表示される。


確かにこれ一見すると「なんでこんなことになってるんだ？」と思うが、コメントにもある通りで「確かに弁当作りながらパソコンなんて見てられないか」とも思う。

ん？？？？？だったら間にTwilio挟めばいいじゃん！！API戦士トゥイリオ、参上！！！！

# でもTwilio Programable Faxは終了
なぁぁあああああああああああああああああ！！！！トゥイリオ、そりゃないぜぇ！！！

・・・ふふ、こうなったらInterFaxで作ってやる！！（もはやTwilio Advent Calendarである意味がない気もするが、いいのだ。この昂った私のハートビートを抑えることはもうできない）

# InterFaxとは？
よく分からないが、多分FAX APIサービスなのだろう。Twilioのお知らせにも「こっちに切り替えてくれ」みたいな案内が出ているし。
https://support.twilio.com/hc/en-us/articles/1260800775109-Programmable-Fax-Migration-Guide-for-Upland-InterFAX

というわけで、ここからは

**InterFaxを使ってみた！！**

という投稿でいく！！
（何度も言いますがこれTwilioのAdvent Calendarですからね。成り行き上仕方無しにこうなったということ、分かってくださいね）

# とりあえず登録してみる
さぁ、この得体のしれない初めてのサービスに登録する時のこのドキドキ、自分の情報が一体どんな扱いをされるのか、最早そんなことはどうだっていい！！裸の自分をさらけ出すようなそんな恥ずかしさと未知の世界に飛び出していく解放感、羞恥心と高揚感がないまぜになったまま自分の個人情報を登録していく。そうだ、これは初めてTwilioに登録した時と同じだ。「今からクラウドで電話が使える」ただそれだけのことだったのにあの時夢中でアカウントを作った僕。気づけばUSアカウントもkddiアカウントも色々作った。それからTwilioは上場、本人確認が厳格になり、気づけばもうあのトキメキを感じることも少なくなってしまったなぁ・・・そう思っていたら！！再びの出会い！！何！？これって運命！？・・・って、もういい？とりあえず登録するだけなので次行きます。
![Developer Registration _ InterFAX - Google Chrome 2020_12_21 17_42_23 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260443/e363eace-83f9-175d-79ac-1421baba0416.png)

# cURLで送信テスト
「さぁ、これでもう君は電話を自由自在に操れるよ。早速このコマンドを打ち込んでごらん」誘われるままにコマンドを打ち込もうとする僕。「えっ？もう使えるの？そ、そんな、まだ心の準備が」戸惑う僕をまるで・・・って、いい加減にしろ？分かりましたよ。なんかすぐに使えそうなので試しに打ってみました。

```
curl "https://rest.interfax.net/outbound/faxes?faxNumber=0012129876543" ^
    -u username:password ^
    --data-binary "@dailyrates.pdf" ^
    -H "Content-Type: application/pdf"
```

で、まぁこの辺で上手くいかない

```
{"code":-111,"message":"Attempting to fax to a number that is not the designated fax number in a developer account","moreInfo":null}
```

そうそう、こういうのが出てくると色々試してね、いつの間にか課金する、というね。思い出すなぁ・・・と思ったら本当にその展開。どうやら有料にしないと好きなところには送信出来ないというわけで、開発者用の番号は「+999-9999-0」、こっちがビジーの時は「+999-9999-6017」を使ってね、とのことだった。
https://docs.uplandsoftware.com/interfax/documentation/dev-guide/dev-register/

とりあえず「+999-9999-0」でやってみる。すると、あれ？レスポンスが来ない。と思ったら、そうだ管理GUIがあるんだった。早速入ってみると、おぉ～日本語だよ。妙な安心感。
![Developer Registration _ InterFAX - Google Chrome 2020_12_21 18_31_23 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260443/57451db6-20cc-1771-5544-8e6eddd98e99.png)
早速ログインして送信履歴を開けてみると、おぉ～成功してるじゃないか！！！（ちなみに1回失敗したのは--data-binaryにそのままバイナリー化した文字列を放り込んだらダメだった。2回目と3回目はpdfを指定したらすんなり成功）
![「問い合わせが来たらFAXで受信。。。というネタを書こうと思ったらTwilio Fax終了のお知らせ」を編集 - Qiita - Google Chrome 2020_12_21 19_22_52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260443/758c8ebb-1be5-927f-a510-d8b21e502d9e.png)
虫眼鏡のアイコンを押すと送信内容がtifでダウンロードできるので、しっかり確認。
![1113187942.tif - Windows フォト ビューアー 2020_12_21 19_22_36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260443/c1e023bc-d8e0-5526-874c-2a6026f53146.png)
バッチリだ。

# 実際に送ってみる
こうなるとやっぱり実際に送りたくなってくる。そうだよ、この課金の興奮。「1,000円ぐらいだったら、まぁいいかな。飲み代ちょっと節約したと思えば、うん、そうだよ、ちょっとだけ、ちょっと・・・」この背徳感ともいえるゾクゾクとワクワク。あぁ～、ここから始まるクラウド破産への道！！いくぞ光の呼吸　電話の型　FAX斬り・・・って、何かイタイ？分かりましたよ、さっさと課金しますって。

まぁ、実際管理画面上でポチポチ押してクレカを登録するとあっさり出来そう・・・と思ったら、ここで何とクレジットカードが登録できない！！！
![Developer Registration _ InterFAX - Google Chrome 2020_12_21 19_02_35 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260443/222850b8-6eb8-79b8-a244-cbe8c28d0540.png)
仕方ない、とりあえず問い合わせだけ送っておいて返信来たらまた試そう。

# 問い合わせフォームからFAX送信をやってみる
この圧倒的なハードルの低さ！！大したことやっていないのになんかすごいことやってる感が半端ない！！「おぉ～俺って天才じゃねぇか？」そう、恐らく世界中にそういう勘違いを起こすこの強烈なまでの誘惑、これだよこれ。さぁ闇の帝王！！お前の企みはこのマジ・・・って、さっさと作れ？分かった分かった。

フォームはまぁ適当にちゃちゃっと。

```
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>faxテスト</title>
    </head>
    <body>
        <form action="faxapikick.php" method="post">
            名前：<input name="name" type="text" size="30"><br/>
            メールアドレス：<input name="mail" type="text" size="40"><br/>
            電話：<input name="tel" type="text" size="20"><br/>
            血液型：<select name="bloodtype">
                <option value="A">A型</option>
                <option value="B">B型</option>
                <option value="O">O型</option>
                <option value="AB">AB型</option>
            </select><br/>
            問い合わせ：<textarea name="content" row="10"></textarea>
            <input type="submit" value="問い合わせ">
        </form>
    </body>
</html>
```

で、これを受け取ってfaxに送信。ちゃちゃっとphpで書いてしまう（ライブラリはcomposerでインストール）

```
<?php
require_once './vendor/autoload.php';

$file = 'fax.txt';
$current = $_POST["name"].",";
$current .= $_POST["mail"].",";
$current .= $_POST["tel"].",";
$current .= $_POST["bloodtype"].",";
$current .= $_POST["content"];
file_put_contents($file, $current);

$client = new Interfax\Client(['username' => 'xxx', 'password' => 'xxx']);
$fax = $client->deliver([
    'faxNumber' => '+999-9999-0',
    'file' => __DIR__ . '/fax.txt'
]);
```

そして動かす。まずは入力
![faxテスト - Google Chrome 2020_12_21 22_31_52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260443/31e20f66-58d9-96a6-b88b-aae49ac03949.png)

そして送信してみると・・・
![1113229671.tif - Windows フォト ビューアー 2020_12_21 22_34_53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260443/6c76da5f-bb42-1d3c-781e-b6c3406b0896.png)
おぉ、送れた！！

# まとめ
というわけで、Twilio FAXは終わったけどInterFAXで同じように出来そうだ！！ありがとう、トゥイリオ！！