このコロナ禍で、多くの人が同じことをしていると思いますが、わたしも外出を控えて様々なショッピングサイトから、注文して配達を頼んでいました。 ショッピングサイトの登録時には、たいてい電話番号も入力するようになっていました。

悲しいことに、しばらくするとわたしの電話にセールスの電話がかかってきたり、SMSが届いたりするようになりました。

ダイヤルインナンバー(DIN)とボイスメール

そこで、Xoxzoがリリースした ボイスメール機能を使い、 ショッピングサイトの登録用に使う番号をあっさり入手することができました。 これまでは、Xoxzoでは入電に対し、転送を行ったり、テキスト読み上げ機能やオーディオファイルを使って応答することしか できませんでした。しかしボイスメール機能がくわわったことで、相手からのメッセージを保管しておけるようになったのです。

伝言を聞いておいてもらえる機能というのが、わたしにとっては重要でした。 というのも、ショップからの電話はやむを得ず電話連絡している場合もあるかもしれないからです。 ですから、留守録したメッセージを保管しておいてくれて、そのメッセージの着信を連絡してくれる、そういう方法を探していたのです。

どうやってこれを設定するのか、というところは、下記をお読みください。

APIユーザーを作る

アカウントの作成後、電話番号の取得に必要な認証情報を得るために、 APIユーザーを作ります。取得する電話番号が、ショッピングサイトの登録などに使う電話番号となります。

  • ログインしたら、APIユーザ ダッシュボードが表示されます。 右側のAPIユーザ追加 ボタンをクリックし、新規APIユーザを作りましょう
  • APIユーザにつけるニックネームを設定する画面が表示されます。このAPIユーザを使う目的など、たとえば”Amazon”などわかりやすい名前を設定してください。
  • ダッシュボードに戻ります。つぎに必要なのは、今作成した新規APIユーザの API SIDAuth Token です。後ほど必要になるので、コピーをとってください。

アクションURLの設定

取得する電話番号への着信をXoxzoのシステムが受け取った時、システムに何をしてほしいのかをお知らせください。 ボイスメールを取得する前に、この準備を行ってください。

Xoxzoのシステムは、action_url という特定のURLへリクエストを出します。 このURLは、ご自身で設定してください。このURLを、ボイスメールを使いたい番号を取得する際、指定します。 ご自身で設定するURLですから、どこかでホストされているものでなくてはなりません。

このURLをご自分でホストしてもよいのですが、Xoxzoシステムがリクエストを出して この action_url がレスポンスを返すのは ほんの少しのテキストのみとなります。Xoxzoからのリクエストに対するレスポンスをプログラム的に変更できれば、 かかってきた電話をどのように扱いたいのかを変更できる強力な方法となります。

今回のエクササイズでは、着信した電話をボイスメールに保管するというだけのことに焦点を当てています。 ですから、派手なロジックは必要なく、このテキストをホストできるだけのシンプルなもので良いのです。

Xoxzoの中には、Github Gist を使っている人もいます。 github.com へのサインアップは無料ですし、このテキストをオンラインにおいておく action_url としては、 手早いやり方ですね。後ほど、このaction_url と他のテキストを使って構成を行いますが、そのテキストが、gist のファイルの内容となります。 gist を保存し、raw ボタンでプレーンテキストとして確認することができます。自分の gist を見ているときには、 右側に表示されています。この raw gist を表示しているときの URL をコピーしておいてください。ご自分の action_url となります。

電話番号を取得する

まず、ダイヤルインナンバー(DIN)を取得しましょう。 取得可能な番号を探すには、XoxzoAPIに、ご自分の API SID と Auth Token を使ってリクエストを出します。 curl のプログラムがインストールされている場合、このような感じになります。

curl -u <SID>:<AUTH_TOKEN> https://api.xoxzo.com/voice/dins/

このリクエストを出すには、どんなプログラムを使っても、またどんなプログラミング言語を使っていただいても大丈夫です。 ここでは、コマンドラインのリクエストとして一般的である curl を使った例をサンプルとして用いています。

このリクエストを出すと、取得可能なダイヤルインナンバーのリストが返されます。 どの電話番号を取得するか決まったら、次に行う取得に必要となりますので、その番号の din_uid を控えてください。 その後この番号に、actiona_url を併記する際にも使用します。

ダイヤルインナンバーの取得には、APIへ POST リクエストを出してください。

curl -u <SID>:<AUTH_TOKEN> -d'din_uid=<din_uid>' https://api.xoxzo.com/voice/dins/subscriptions/

このリクエストが成功すると、即時に契約が開始となりアカウントからクレジットが差し引かれます。

詳細は、ドキュメンテーションにてご確認ください。

action_url の併記を忘れずに

電話番号を取得しただけでは、ダイヤルナンバーは何もできません。

次のステップは、 action_urlをこの番号に併記することです。

ボイスメールのシステムは、着信挨拶メッセージを、テキスト読み上げ機能 または ホストしている mp3 ファイルで構成します。

下記の例では、テキスト読み上げ機能を使用します。

テキスト読み上げ機能 を使った挨拶文は、action_url 内に、voicemail say を文頭に、使用する言語コード、そしてクォーテーションマークで囲ったメッセージで設定してください。

voicemail say en "お電話ありがとうございます。ただいま電話に出ることができませんので、折返しお電話させていただきます。"

action_urlの内容は、このようになります。この記事の冒頭に記した Github gist を未だ作成していないようでしたら、 お好きなメッセージを入れて、是非作ってみてください。そして、raw gist のURLを action_url としてコピーしてください。 さぁ、URLが準備できたら、取得したダイヤルインナンバーに併記しましょう。

curl -u <SID>:<AUTH_TOKEN> -d'action_url=<url>' https://api.xoxzo.com/voice/dins/subscriptions/<din_uid>/

ここまでできれば、「自分専用」のボイスメールは準備OKです。

「自分専用」の番号に着信を受ける

一般的な留守番電話と、機能としては代わりありません。

誰かがこの電話番号へ電話を掛けると、設定した挨拶メッセージが流れ、伝言が録音されます。

あとは、都合の良いときにそのメッセージを聞くだけ、ということです。

ボイスメールの再生

録音された伝言メッセージを聞くには、Xoxzoのアカウントへログインし、左側のメニューから 留守録データ を選んでください。

ボイスメールのメッセージと、受信した時間や相手の電話番号が表示されます。メッセージ音声はダウンロードしたり削除できます。

たくさんリストに残している場合には、契約している番号やかけてきた相手の電話番号、APIユーザごとにフィルターをかけることもできます。

ボイスメールの設定完了

これで完了です! action_url のホストをどうするかが一番難しいところかもしれませんが、そこができてしまうと、複雑な作業はありません。

重要性の低い相手への連絡先通知には、今後この電話番号を使ってください。

この電話番号にも、電話をかけてくる人はいると思われますが、インターネット上で出会う相手へ、個人の携帯電話番号や仕事の電話番号を教えたりはしなくてよくなります。

イクバル・アバドゥラ

イクバル・アバドゥラ

代表者取締役

1997年に来日。佐賀大学の理工学部を卒業しヤフー株式会社、アマゾン株式会社を経て2007年に株式会社Xoxzoの前身である株式会社MARIMOREを設立。 PyCon JPにもボランティアとして活動しています。

ホセ・モンジェ

ホセ・モンジェ

エンジニア、開発担当

2018年6月入社。アテネオ・デ・マニラ大学にて心理学を専攻。分析や人事分野での職歴を持つ。プログラミングは長年の趣味であったが、仕事にしたい、ウェブを開発したいという情熱に従い決断した。JavaScriptよりもPythonを愛し、Raspberry Piesにひらめきを得るのが好き。