Scripting API リファレンス|TropoスクリプティングAPI

call() method

   

アウトバウンドコールを開始します。 このチャンネルとネットワークパラメータによって、開始する通話の種類が決まります。

 

電話の送信先としては以下の形式が対応しています。

     
  • tel:電話番号です。 フォーマットされた電話番号(たとえば01-2345-6789)は、ダイアルする前にTropoによりフォーマットを除去されます。
  • sip:123456789@sip.provider.comのようなSIPプロトコルアドレスです。
 

このメソッドが呼び出された場合:

 
  • 新規のcallは指定された宛先(destination)に向けて開始されます。
  • 複数の電話番号と複数のSIPアドレスが配列として定義されている場合、最初に電話に出た発信先と通話することになります。
  • answerOnMediaがtrueである場合、新規の通話からの音声がすぐに接続されます。
  • このシステムは、定められたタイムアウト時間まで、応答または新しい電話によるその他のイベントを待ちます。
  • callがtimeout時間内に正常に完了した場合、onAnswerイベントを実行し、「answer」イベントが返信されます。
  • callがtimeout時間終了前に失敗した場合、onCallFailureを実行し、callFailureイベントが返信されます。
  • callがtimeout時間の経過のために失敗した場合、onTimeoutを実行し、timeoutイベントが返信されます。
 

追加ダイヤルオプション:

  • postd - 通話が接続された後にダイヤルするためのDTMFディジットです。
  • pause - 電話が接続されてから、数字を出力するまでの待機時間の長さです。これを使うことで、大きな時間の値が定義できます。
  • p - 1秒間の休止のことです。
 

「0909887****;postd=1234pp56;pause=5s」を例に説明します。 この場合、電話番号に接続した5秒後に1234をダイヤルし、さらに2秒間休止 (pp)してから56をダイヤルします。 "「0909887****;postd=ppppp1234pp56"」の例でも全く同じことを行いますが、少しだけ複雑になります。 「ms」にも対応しているので、5sの代わりに5000msと定めることもできます。

 

詳細については、電話をかけるの用例をご覧ください。 通話が開始された際に、グローバル変数としてパラメータを渡す場合には、この用例をご覧ください。

 

パラメータ

destination
データの種類:String型またはArray型 デフォルト:なし 必須
destinationとは、電話やメッセージの宛先のことです。 現在では、以下のいずれかの形式をとることができます。 
  • 0909887**** - 普通にダイヤルするための電話番号です。
  • tel: 0909887**** - 接頭辞にtel: が付いた電話番号です。
  • sip:username@domain.com - ダイヤルするためのSIP URLです。
  •  
音声電話をかける場合、番号の一部として、ダイヤルオプションを定められます。
  • postd - 通話が接続された後にダイヤルするためのDTMFディジットです。
  • 一時停止 - 通話が接続された後に、ディジットを発行するまでに待機する時間です。
  • 「14155551212;postd=1234pp56;pause=1000ms」を例にとって説明します。 これは、電話番号に接続した1秒後に1234をダイヤルし、さらに2秒(PP)経った後に、56をダイヤルするということです。
  本文でも述べましたが、複数の電話番号またはSIPアドレスあるいはその両方を音声通話用の配列として一覧表示することもできます。 配列の場合は、最初に電話に出た受信者と接続します。
 

名前付きパラメータ

 
allowSignals
データの種類:String型またはArray型 デフォルト:*(任意の信号) 任意
このパラメータを使用すると、この関数にシグナルを割り当てることができます。一致するシグナル名を持つTropo REST APIからのイベントは、この関数を中断します。 すでにこの関数が実行され完了していた場合、中断の要求は無視されます。 この関数がまだ実行されていない場合、中断の要求は実行されるまでジョブキューに並びます。 デフォルトでは、allowSignalsはどんなシグナルも有効なものとして認識します。 allowSignalsを定めなかった場合、その関数は「中断なし」として定義されます。 配列を使うこともできます。配列にある名前のいずれかに一致するシグナルを受信した際に、この関数を中断します。
answerOnMedia
データの種類:Boolean型 デフォルト:false 任意
atrueに設定すると、callに「応答がなされた」ものとみなし、相手方からメディアを受信するとすぐに、音声の再生がはじまります(リンギング、ビジー信号など)。 Pythonを使用している場合、trueとfalseではなく、必ずTrueとFalseを使用するようにしてください。 callに「応答された」ものと見なされるので、onTimeoutイベントは実行されず、onAnswerイベントが最初の呼び出し音で実行されることに注意してください。 また、answerOnMediaは課金の開始に繋がります。ですからcallが接続されない場合にも料金が発生することがあります。
callerID
データの種類:String型 デフォルト:なし 任意
同一のアプリケーションに複数の番号が設定されている場合、ナンバーディスプレイに表示される発信者番号(callerID)を指定することができます。 発信者番号の指定は、同一のアプリケーションに紐付く番号のみ有効です。指定が無い場合、またはアプリケーションに関係の無い番号を指定した場合は、 設定に関わらず電話番号一覧の最上位の番号が表示されます。
headers
データの種類:Object型 デフォルト:なし 任意
これは、通話をするときに使われるSIPヘッダを含むハッシュです。このパラメータはSIP通話をするときにのみ適用されます。
network
データの種類:String型 デフォルト:なし 任意
当該セッションのために使用されているネットワークの名前のことです。「PSTN」、「SIP」、「INUM」になります。
onAnswer
データの種類:Function型 デフォルト:なし 任意
callが応答されたときに実行するイベントハンドラを登録します。
onBusy
データの種類:Function型 デフォルト:なし 任意
呼び出されたアドレスがビジー(電話の場合はビジー信号、SIPの場合は480、486、600)を返した場合に実行します。
onCallFailure
データの種類:Function型 デフォルト:なし 任意
発信通話または転送に失敗した場合(大抵は発信先の電話番号が間違っているか、切断されているのが原因)に、このイベントは実行されます。
onError
データの種類:Function型 デフォルト:なし 任意
音声再生中にシステムエラー(非ユーザーエラー)が発生した場合に実行されるイベントハンドラを登録します。
onSignal
データの種類:Function型 デフォルト:なし 任意
関数がシグナルで中断された場合に実行するコールバック関数を指定します。
onTimeout
データの種類:Function型 デフォルト:なし 任意
指定された時間内に通信に応答がなされない場合に、実行されるイベントです。
recordFormat
データの種類:String型 デフォルト:audio/wav 任意
録音に使用される音声フォーマットのことで、値には「audio/wav」、「audio/mp3」、「audio/au」があります。
recordMethod
データの種類:String型 デフォルト:POST 任意
HTTP経由で録音を送信する場合、このパラメータが使用されるメソッドを決定します。 「POST」(デフォルトではこちら)あるいは「PUT」に設定できます。 POST経由で送信する場合、フォームフィールドの名前は「filename」です。
recordURI
データの種類:String型 デフォルト:なし 任意
録音したオーディオファイルを送信するためのFTPまたはHTTPのURLのことです。 POST経由で送信する場合、フォームフィールドの名前は「filename」です。
timeout
データの種類:Float型 デフォルト:30.0 任意
timeoutはTropoが待機する時間を秒単位で指定します。 音声通話の発信の場合、50~90秒の間に設定することをお勧めします。 ある電話会社が何らかの理由で通話を接続できない場合に、他の電話会社に接続を試みる時間を設定します。
  call(['031234XXXX','0901234XXXX'], {
   timeout:120,
   callerID:'0501234XXXX',
      onAnswer: function() {
       say("おはようございます!");
       log("Obnoxious call complete");
   },
   onTimeout: function() {
       log("Call timed out");
   },
   onCallFailure: function() {
       log("Call could not be completed as dialed");
   }
});  
call ['031234XXXX','0901234XXXX'], {
   :timeout => 120,
   :callerID => '0501234XXXX',
   :onAnswer => lambda {
       say "おはようございます!"
       log "Obnoxious call complete"},
   :onTimeout => lambda {
       say "Call timed out" },
   :onCallFailure => lambda {
       log "Call could not be complete as dialed" }
}
<?php
call(array("031234XXXX","0901234XXXX"), array(
   "timeout" => 120,
   "callerID" => '0501234XXXX',
   "onAnswer" => "answerFCN",
   "onTimeout" => "timeoutFCN",
   "onCallFailure" => "callFailureFCN"
   )
);
function answerFCN($event) {
   say("おはようございます!");
   _log("Obnoxious call complete");
}
function timeoutFCN($event) {
   _log("Call timed out");
}
function callFailureFCN($event) {
   _log("Call could not be completed as dialed");
}
?>
call(['031234XXXX','0901234XXXX'], {
   "timeout":120,
   "callerID":'0501234XXXX',
   "onAnswer": lambda event : say("おはようございます!") and log("Obnoxious call complete"),
   "onTimeout": lambda event : log("Call timed out"),
   "onCallFailure": lambda event : log("Call could not be completed as dialed")
})
call(['031234XXXX','0901234XXXX'], [
   timeout: 120,
   callerID: '0501234XXXX',
   onAnswer: {
       say("おはようございます!")
       log("Obnoxious call complete") },
   onTimeout: {
       log("Call timed out") },
   onCallFailure: {
       log("Call could not be complete as dialed") }
])
   
ask conference