はじめに
ほぼ前回の記事の使い回しですが、 Twilio のapiを使って発信を行い
音声合成によるボイスメッセージを送ってみました。
全く同じソースでWindows、Android共に動作します。
画面作成
ソースリスト
unit rest1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, REST.Types,
FMX.Controls.Presentation, FMX.StdCtrls, Data.Bind.Components,
Data.Bind.ObjectScope, REST.Client, REST.Authenticator.Basic, FMX.ScrollBox,
FMX.Memo, FMX.Edit;
type
TForm1 = class(TForm)
RESTClient1: TRESTClient;
btn_send: TButton;
HTTPBasicAuthenticator1: THTTPBasicAuthenticator;
RESTRequest1: TRESTRequest;
RESTResponse1: TRESTResponse;
Memo1: TMemo;
ed_message: TEdit;
ed_account: TEdit;
ed_token: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
ed_to: TEdit;
Label5: TLabel;
ed_from: TEdit;
btn_dial: TButton;
Label6: TLabel;
ed_voice: TEdit;
procedure btn_sendClick(Sender: TObject);
private
{ private 宣言 }
public
{ public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
procedure TForm1.btn_sendClick(Sender: TObject);
var action : String;
begin
HTTPBasicAuthenticator1.Username := ed_account.Text;
HTTPBasicAuthenticator1.Password := ed_token.Text;
RESTRequest1.Method := rmPost;
RESTRequest1.Client := RESTClient1;
RESTRequest1.Response := RESTResponse1;
if Sender = btn_send then
action := 'Messages.json'
else if Sender = btn_dial then
action := 'Calls.json'
else
exit;
RESTClient1.BaseURL :=
format('https://api.twilio.com/2010-04-01/Accounts/%s/%s',[ed_account.text,action]);
RESTClient1.Authenticator := HTTPBasicAuthenticator1;
with RESTClient1.Params do
begin
Clear;
if action = 'Messages.json' then
AddItem('Body',ed_message.Text)
else if action = 'Calls.json' then
AddItem('Twiml',
format('<Response><Say language="ja-JP" voice="alice">%s</Say></Response>',[ed_voice.text]));
AddItem('To',ed_to.Text);
AddItem('From',ed_from.Text);
end;
RESTRequest1.Execute;
memo1.lines.text := RESTResponse1.Content;
end;
end.
実行
入力ボックスにパラメータを入れてDialボタンを押すと、スマホに着信しました。
ガイダンスメッセージの後で、着信画面のボタンを押すと女性の声で指定した
メッセージを読み上げてくれます。(日本語指定にすると漢字も読んでくれます。)
※最初はボタンを押すことに気が付かず、音声メッセージが流れないぞと
さんざん悩んでしまいました。(恥)
画面下のメモコンポーネントにレスポンス内容を表示しますので、上手くいかない場合は
エラー内容を頑張って読み解いてください。
To:には携帯番号の頭に+81(日本の国番号)をつけています。
SMSの場合は先頭のゼロをつけても動作しましたが、発信の場合は先頭のゼロを
取り除いておかないと着信しませんでした。