TaskRouter.js Worker:ブラウザーでWorkerを管理する
TaskRouter.js Workerを使ってTaskをWebベースのアプリケーションにルーティングする方法をチュートリアルで確認できます。 TaskRouterクイックスタートをご覧ください。
TaskRouterのJavaScript SDKを使うと、TaskRouter Taskを処理する人向けのWebベースアプリケーションを簡単に構築できます。 開発者はSDKを使って、次を実行できます。
- TaskRouter Workerとしてエンドポイントを登録します。
- 登録されているWorkerのActivity状態を管理します。
- 割り当てられているTaskとReservationの詳細を受信します。
- Reservationを承諾および拒否する。
- DequeueまたはCall命令で、あるWorkerに発信する
- Taskを完了する
動作のしくみ
TaskRouter JavaScript SDKは、TaskRouterへのWebSocket接続を確立します。 TaskRouterのEventとコマンド(Task割り当て、Taskの承諾、Activityの変更など)は、このWebSocket接続を通じて伝達します。
アプリケーションに SDK を追加する
以下のように、TaskRouter JS SDK を JavaScript アプリケーションに取り込みます。
<script type="text/javascript" src="//media.twiliocdn.com/taskrouter/js/v1.14/taskrouter.min.js"></script>
TaskRouter Workerケイパビリティートークンの作成
TaskRouterはTwilioケイパビリティートークンを使って、TaskRouterリソースへのスコープ宣言されたアクセスをJavaScriptアプリケーションに委託します。 Twilioケイパビリティートークンは、JSON Web Token(一般に JWTと呼ばれ、「jot」と発音)規格に準拠し、第三者がクレデンシャルを一定期間使うことができます。TaskRouter Workerを登録するには、WebサーバーはTwilioケイパビリティートークンを生成し、それをJavaScriptアプリケーションに提供する必要があります。
現在は、次の 2 つのケイパビリティーを有効化できます(多くの場合、2 つともアプリケーションで使用する必要があるでしょう)。
Capability | 認証 |
---|---|
ActivityUpdates | Workerは現在のActivityを更新できます。 |
ReservationUpdates | WorkerはReservationを承諾または拒否できるとともに、dequeue命令またはcall命令を指定できます。 |
Twilioのどのヘルパーライブラリーを使用しても、TaskRouterケイパビリティートークンを生成できます。 登録しようとするWorkerに、TwilioのAccountSidとAuthToken、WorkspaceSid、およびWorkerSidを渡す必要があります。 たとえば、PHPヘルパーライブラリーを使用する場合、次のようにしてトークンを作成し、ケイパビリティーを追加できます。
さらに、これらのケイパビリティーを越え、特定のリソースへのアクセスをもっと細かく定義できます。これは、「JWT の構築」で参照できます。
TaskRouterケイパビリティートークンを生成したら、それをフロントエンドウェブアプリケーションに渡して、次のようにJavaScriptライブラリを初期化できます。
var worker = new Twilio.TaskRouter.Worker(WORKER_TOKEN);
このライブラリがTaskRouterに接続されると、「ready」Eventが発生します。
worker.on("ready", function(worker) { console.log(worker.sid) // 'WKxxx' console.log(worker.friendlyName) // 'Worker 1' console.log(worker.activityName) // 'Reserved' console.log(worker.available) // false });
このオブジェクトで公開されているメソッドとイベントについては、下記をご覧ください。
Worker API
TaskRouter.js Worker は、以下の API を公開しています。
Twilio.TaskRouter.Worker
Twilio.TaskRouter.Worker は、WorkerActivityを管理し、WorkerにTaskが割り当てられた場合またはWorkerのActivityが変更された場合に通知を受信するために使用する最上位クラスです。
new Twilio.TaskRouter.Worker(workerToken)
workerToken
で提供されているケイパビリティーで新しい Twilio.TaskRouter.Worker を登録します。
パラメーター
名前 | Type | 概要 |
---|---|---|
workerToken | 文字列 | Twilio TaskRouterケイパビリティートークン。詳細については、TaskRouterケイパビリティートークンの作成をご覧ください。 |
debug | boolean | (オプション)JS SDKがEventメッセージをコンソールに出力するかどうかを示します。初期値は true です。 |
connectActivitySid | 文字列 | (オプション) WebSocketの接続に際してWorkerを配置するActivitySidです |
disconnectActivitySid | 文字列 | (オプション) WebSocketの切断に際してWorkerを組み込むActivitySidです |
closeExistingSessions | boolean | (オプション) Connectingの際、同一のWorkerに対して既存のWebsocketsを切断するかどうかを指定します。 既定値はfalseです。 |
使用例
var worker = new Twilio.TaskRouter.Worker(WORKER_TOKEN);
デバッグを無効にします。
var worker = new Twilio.TaskRouter.Worker(WORKER_TOKEN, false);
ConnectingおよびDisconnecting Activityの追加と、既存のセッションのクローズ
var worker = new Twilio.TaskRouter.Worker(WORKER_TOKEN, false, "WAxxx", "WAyyy", true);
メソッド
update([args...], [resultCallback])
Workerのプロパティーを更新します。 ActiveSid、FriendlyNameなどといったWorkerのプロパティーがあります。 これらは個別に (下記参照) またはまとめて編集可能です。 WorkerのAttributesプロパティーをを変更したい場合は、新しいAttributesのJSONブロブ全体を渡すことが必要です。
メモ: WorkerのActivity状態を更新すると、activity.update
Eventも送信されます。 Workerの属性を更新すると、attributes.update
Eventも送信されます。
パラメーター
名前 | Type | 概要 |
---|---|---|
args... | 文字列または JSON | 単一の API パラメーターおよび値、または複数の値を含む JSON オブジェクト。 |
resultCallback | 関数 | (オプション)更新の結果、呼び出されるJavaScript関数です。 エラーが発生した場合は、この関数に最初に渡される引数がエラーになります。 更新が成功した場合は、最初の引数はnullになり、2番目の引数に更新されたWorkerオブジェクトが渡されます。 |
単一の属性の例
worker.update("ActivitySid", "WAxxx", function(error, worker) { if(error) { console.log(error.code); console.log(error.message); } else { console.log(worker.activityName); // "Offline" } });
複数の属性の例
var props = {"ActivitySid":"WAxxx", "FriendlyName":"UpdatedWorker"}; worker.update(props, function(error, worker) { if(error) { console.log(error.code); console.log(error.message); } else { console.log(worker.activityName); // "Offline" } });
updateToken(workerToken)
Workerに対するTaskRouterケイパビリティートークンを更新します。
パラメーター
名前 | Type | 概要 |
---|---|---|
workerToken | 文字列 | 有効なTaskRouterケイパビリティートークンです。 |
例
var token = refreshJWT(); // your method to retrieve a new capability token worker.updateToken(token);
activities.fetch(callback)
TaskRouterのWorkspaceで構成されているActivityの一覧を取得します。
パラメーター
名前 | Type | 概要 |
---|---|---|
コールバック | 関数 | Activityの一覧が返されたときに呼び出される関数です。 リストの取得中にエラーが発生した場合は、この関数に渡される最初のパラメーターにエラーオブジェクトが渡されます。 取得が成功した場合は、最初のパラメーターはnullになり、2 番目のパラメーターにはActivityの配列が渡されます。 |
worker.activities.fetch( function(error, activityList) { if(error) { console.log(error.code); console.log(error.message); return; } var data = activityList.data; for(i=0; i<data.length; i++) { console.log(data[i].friendlyName); } } );
fetchReservations(callback)
Workerに割り当てられたResavationの一覧を取得する
パラメーター
名前 | Type | 概要 |
---|---|---|
コールバック | 関数 | Reservation一覧が返されるときに呼び出される関数です。 一覧の取得時にエラーが発生すると、この関数に渡される最初のパラメーターにはErrorオブジェクトが含まれます。 取得に成功した場合、最初のパラメーターはnullとなり、2番目のパラメーターにはReservationの配列が含まれます |
params | オブジェクト | (オプション)クエリーパラメーターの JSON オブジェクト。 |
worker.fetchReservations( function(error, reservations) { if(error) { console.log(error.code); console.log(error.message); return; } var data = reservations.data; for(i=0; i<data.length; i++) { console.log(data[i].sid); } } );
下記のコードは保留中のReservationを取得します:
var queryParams = {"ReservationStatus":"pending"}; worker.fetchReservations( function(error, reservations) { if(error) { console.log(error.code); console.log(error.message); return; } var data = reservations.data; for(i=0; i<data.length; i++) { console.log(data[i].sid); } }, queryParams );
fetchChannels(callback)
Workerに割り当てられたChannelの一覧を取得します
メモ: これを使用するには、Worker JWTのコンストラクト時にWorkerに指定されたWorkerのサブリソースの取得を許可してください。
パラメーター
名前 | Type | 概要 |
---|---|---|
コールバック | 関数 | Worker Channel一覧が返される際に呼び出される関数です。 一覧の取得時にエラーが発生した場合、この関数に渡される最初のパラメーターにはErrorオブジェクトが含まれます。 取得に成功すると、最初のパラメーターはnullとなり、2番目のパラメーターにはChannelの配列が含まれます。 |
worker.fetchChannels( function(error, channels) { if(error) { console.log(error.code); console.log(error.message); return; } var data = channels.data; for(i=0; i<data.length; i++) { console.log(data[i].taskChannelUniqueName + " with capacity: " + data[i].configuredCapacity); } } );
updateTask(taskSid, params, callback)
指定されたTaskを指定されたパラメーターで更新します
パラメーター
名前 | Type | 概要 |
---|---|---|
TaskSid | 文字列 | 指定されたTaskSidです |
params | JSON | 複数の値を含むJSONオブジェクトです |
コールバック | 関数 | アップデートされたインスタンスが返されたときに呼び出される関数。インスタンスのアップデート中にエラーが発生した場合は、この関数に最初に渡されるパラメーターにエラーオブジェクトが渡されます。アップデートが成功した場合は、最初のパラメーターは null になり、2 番目のパラメーターにはアップデートされたインスタンスが渡されます。 |
var params = {"Priority":"15"}; worker.updateTask(taskSid, params, function(error, updatedTask) { if(error) { console.log(error.code); console.log(error.message); return; } console.log("Updated Task Priority: "+updatedTask.priority); } );
completeTask(taskSid, callback, reason)
オプションの理由とともに指定されたTaskを完了させます
パラメーター
名前 | Type | 概要 |
---|---|---|
TaskSid | 文字列 | 指定されたTaskSidです |
コールバック | 関数 | アップデートされたインスタンスが返されたときに呼び出される関数。インスタンスのアップデート中にエラーが発生した場合は、この関数に最初に渡されるパラメーターにエラーオブジェクトが渡されます。アップデートが成功した場合は、最初のパラメーターは null になり、2 番目のパラメーターにはアップデートされたインスタンスが渡されます。 |
reason | 文字列 | (オプション) 完了の理由です |
worker.completeTask(taskSid, function(error, completedTask) { if(error) { console.log(error.code); console.log(error.message); return; } console.log("Completed Task: "+completedTask.assignmentStatus); } );
指定されたReservationにコンテキストが存在する場合、Taskオブジェクト自体からTaskを完了できます:
パラメーター
名前 | Type | 概要 |
---|---|---|
コールバック | 関数 | (オプション) 更新済みのインスタンスが返されたときに呼び出される関数です。 インスタンスの更新中にエラーが発生した場合、この関数に渡される最初のパラメーターにはErrorオブジェクトが含まれます。 更新に成功すると最初のパラメーターはnullとなり、2番目のパラメーターには更新されたインスタンスが含まれます。 |
reason | 文字列 | (オプション) 完了の理由です |
reservation.task.complete();
オプションのコールバックを伴うと下記のようになります:
reservation.task.complete( function(error, completedTask) { if(error) { console.log(error.code); console.log(error.message); return; } console.log("Completed Task: "+completedTask.assignmentStatus); } );
on(event, callback)
リスナーを指定されたEventに接続します。サポートされているすべてのEventのリストについては、Eventをご覧ください。
パラメーター
名前 | Type | 概要 |
---|---|---|
イベント | 文字列 | Event名です。サポートされているすべてのEventのリストについては、Eventをご覧ください。 |
コールバック | 関数 | 指定されたEventが発生したときに呼び出される関数です。 |
例
worker.on("activity.update", function(worker) { console.log(worker.activityName) // 'Reserved' console.log(worker.activitySid) // 'WAxxx' console.log(worker.available) // false });
Events
TaskRouterのJSライブラリーは、現在、登録されたWorkerオブジェクトに以下のEventを発行します。
- ready
- activity.update
- attributes.update
- capacity.update
- reservation.created
- reservation.accepted
- reservation.rejected
- reservation.timeout
- reservation.canceled
- reservation.rescinded
- token.expired
- connected
- disconnected
- error
ready
WorkerがTaskRouterとの接続を確立し、初期化を完了しました。
パラメーター
名前 | Type | 概要 |
---|---|---|
worker | Worker | 作成したWorkerを表すWorkerオブジェクトです。 |
例
worker.on("ready", function(worker) { console.log(worker.available) // true });
activity.update
WorkerのActivityが変更されました。このEventは、WorkerのActivityが変更された場合に常に、すなわちTaskRouterがWorkerのActivityを更新した場合およびWorker.jsまたはTaskRouterのREST APIを使用してWorkerのActivityを変更した場合のどちらの場合にも発生します。
パラメーター
名前 | Type | 概要 |
---|---|---|
worker | Worker | 更新されたWorkerオブジェクトです。 |
例
worker.on("activity.update", function(worker) { console.log(worker.sid) // 'WKxxx' console.log(worker.friendlyName) // 'Worker 1' console.log(worker.activityName) // 'Reserved' console.log(worker.available) // false });
attributes.update
Workerの属性が更新されました。
パラメーター
名前 | Type | 概要 |
---|---|---|
worker | Worker | 更新されたWorkerオブジェクトです。 |
例
worker.on("attributes.update", function(worker) { console.log(worker.sid) // 'WKxxx' console.log(worker.friendlyName) // 'Worker 1' console.log(worker.activityName) // 'Reserved' console.log(worker.available) // false });
capacity.update
Workerのキャパシティーが更新されました。
パラメーター
名前 | Type | 概要 |
---|---|---|
チャンネル | WorkerChannel | 更新済みのWorkerChannelオブジェクトです |
例
worker.on("capacity.update", function(channel) { console.log(channel.sid) // 'WCxxx' console.log(channel.taskChannelUniqueName) // 'ipm' console.log(channel.available) // true console.log(channel.configuredCapacity) // '3' console.log(channel.availableCapacityPercentage) // 66.7 console.log(channel.assignedTasks) // 2 });
reservation.created
WorkerにReservationが割り当てられています。
パラメーター
名前 | Type | 概要 |
---|---|---|
reservation | Reservation | Workerに割り当てられているReservationオブジェクトです。 |
例
他の JavaScript オブジェクトの場合と同じように、Taskとその属性の詳細にアクセスします。
worker.on("reservation.created", function(reservation) { console.log(reservation.task.attributes) // {foo: 'bar', baz: 'bang' } console.log(reservation.task.priority) // 1 console.log(reservation.task.age) // 300 console.log(reservation.task.sid) // WTxxx console.log(reservation.sid) // WRxxx });
reservation.accepted
WorkerがReservationを承諾したときに発生します。
パラメーター
名前 | Type | 概要 |
---|---|---|
reservation | Reservation | このWorkerに対して承諾されたReservationオブジェクトです。 |
例
worker.on("reservation.accepted", function(reservation) { console.log(reservation.task.attributes) // {foo: 'bar', baz: 'bang' } console.log(reservation.task.priority) // 1 console.log(reservation.task.age) // 300 console.log(reservation.task.sid) // WTxxx console.log(reservation.sid) // WRxxx });
reservation.rejected
WorkerがReservationを拒否したときに発生します。
パラメーター
名前 | Type | 概要 |
---|---|---|
reservation | Reservation | このWorkerに対して拒否されたReservationオブジェクトです。 |
例
worker.on("reservation.rejected", function(reservation) { console.log(reservation.task.attributes) // {foo: 'bar', baz: 'bang' } console.log(reservation.task.priority) // 1 console.log(reservation.task.age) // 300 console.log(reservation.task.sid) // WTxxx console.log(reservation.sid) // WRxxx });
reservation.timeout
このWorkerに関連付けられている保留中のReservationがタイムアウトしたときに発生します。
パラメーター
名前 | Type | 概要 |
---|---|---|
reservation | Reservation | このWorkerに対してタイムアウトになったReservationオブジェクトです。 |
例
worker.on("reservation.timeout", function(reservation) { console.log(reservation.task.attributes) // {foo: 'bar', baz: 'bang' } console.log(reservation.task.priority) // 1 console.log(reservation.task.age) // 300 console.log(reservation.task.sid) // WTxxx console.log(reservation.sid) // WRxxx });
reservation.canceled
このWorkerに関連付けられている保留中のReservationがキャンセルされたときに発生します。
パラメーター
名前 | Type | 概要 |
---|---|---|
reservation | Reservation | このWorkerに対してキャンセルされたReservationオブジェクトです。 |
処理中のReservationがキャンセルされた場合
worker.on("reservation.canceled", function(reservation) { console.log(reservation.task.attributes) // {foo: 'bar', baz: 'bang' } console.log(reservation.task.priority) // 1 console.log(reservation.task.age) // 300 console.log(reservation.task.sid) // WTxxx console.log(reservation.sid) // WRxxx });
reservation.rescinded
複数Reservationの場合、このWorkerに関連付けられている保留中のReservationが撤回されたときに発生します。
パラメーター
名前 | Type | 概要 |
---|---|---|
reservation | Reservation | このWorkerに対して撤回されたReservationオブジェクトです。 |
処理中のReservationが撤回された場合
worker.on("reservation.rescinded", function(reservation) { console.log(reservation.task.attributes) // {foo: 'bar', baz: 'bang' } console.log(reservation.task.priority) // 1 console.log(reservation.task.age) // 300 console.log(reservation.task.sid) // WTxxx console.log(reservation.sid) // WRxxx });
token.expired
このWorkerを作成するために使用したTaskRouterケイパビリティートークンの有効期限が切れた場合に発行されます。
例
worker.on("token.expired", function() { console.log("updating token"); var token = refreshJWT(); // your method to retrieve a new capability token worker.updateToken(token); });
connected
例
Websocketが接続されると発生します。
worker.on("connected", function() { console.log("Websocket has connected"); });
disconnected
例
Websocketが切断されると発生します。
worker.on("disconnected", function() { console.log("Websocket has disconnected"); });
error
Websocketがエラーになると発生します。
例
worker.on("error", function(error) { console.log("Websocket had an error: "+ error.response + " with message: "+error.message); });
Reservationアクション
WorkerがReservationオブジェクトとともに reservation.created
Eventを受け取った場合、ReservationオブジェクトにはReservationについてアクション可能な複数のメソッドが含まれます。
reservation.accept
Workerに対してReservationが承諾されます。
注:テレフォニーは何も行われません。Enqueue TwiML 動詞を使ってTaskがQueueに入れられた場合、reservation.dequeue(#reservation-dequeue) を利用して、テレフォニーを行い、通話をQueueから外します。
パラメーター
名前 | Type | 概要 |
---|---|---|
resultCallback | 関数 | (オプション)Reservationを受諾した結果、呼び出されるJavaScript関数です。 エラーが発生した場合は、この関数に渡される最初の引数がエラーになります。 アップデートが成功した場合は、最初の引数はnullになり、2 番目の引数に更新されたReservationオブジェクトが渡されます。 |
reservation.accept( function(error, reservation) { if(error) { console.log(error.code); console.log(error.message); return; } console.log("reservation accepted"); for (var property in reservation) { console.log(property+" : "+reservation[property]); } } );
コールバックを気にしなければ、以下だけで大丈夫です。
reservation.accept();
reservation.reject
Workerに対してReservationが拒否されます。
パラメーター
名前 | Type | 概要 |
---|---|---|
ActivitySid | 文字列 | (オプション)Reservationの拒否後にWorkerを更新する先のactivitySidです |
resultCallback | 関数 | (オプション)Reservationを拒否した結果、呼び出される JavaScript関数です。 エラーが発生した場合は、この関数に渡される最初の引数がエラーになります。 更新が成功した場合は、最初の引数はnullになり、2 番目の引数に更新されたReservationオブジェクトが渡されます。 |
reservation.reject( function(error, reservation) { if(error) { console.log(error.code); console.log(error.message); return; } console.log("reservation rejected"); for (var property in reservation) { console.log(property+" : "+reservation[property]); } } );
コールバックを気にしなければ、以下だけで大丈夫です。
reservation.reject();
コールバックを気にせずに、WorkerのActivitySidを更新するのであれば、以下だけで大丈夫です。
reservation.reject("WAxxx");
reservation.conference
カンファレンスを作成してWorkerと発信者をこれに接続します。
メモ: Enqueue TwiML動詞を使用してQueueに入れられたTaskに対するカンファレンスを作成します。
パラメーター
名前 | Type | 概要 |
---|---|---|
from | 文字列 | (オプション) Workerへの発信通話用の発信者番号です。これは検証済みTwilio電話番号であることが必要です。 この番号を元の発信者の番号にする必要がある場合は、株式会社KDDIウェブコミュニケーションズにお問い合わせください。「From」番号が指定されておらず、かつTaskがEnqueue動詞を使用して作成された場合、「conference」指示の実行時に発信者がダイヤルした「To」番号を「From」番号として使用します。 |
postWorkActivitySid | 文字列 | (オプション) Workerをカンファレンス完了後に更新するactivitySidです。 |
Timeout | 文字列 | (オプション)相手から応答がないと判断するまで、"contact_uri" に関連付けられている電話の呼び出し音を鳴らし続ける時間を、整数値(秒)で指定します。初期値は 60 秒です。最大値は 999 秒です。この値を 15 秒などの低い値に設定し、留守番電話やボイスメールにつながる前に電話を切ることができます。 |
to | 文字列 | (オプション)Workerの連絡先URIです。 電話番号またはクライアントIDです。 Workerの属性に「contact_uri」プロパティが含まれない場合は必須です。 |
resultCallback | 関数 | (オプション)ダイヤルの完了時に呼び出されるJavaScript関数です。 エラーが発生した場合は、この関数に最初に渡される引数がエラーになります。 通話が成功した場合は、最初の引数はnullになり、2番目の引数に更新されていないReservationオブジェクトが渡されます。 ただし、さらにアクションを利用することもできます。 下記を参照してください。 |
options | オブジェクト | (オプション) Agent Conferenceをオンにしている場合、Worke Conferenceレグに対してParticipants APIによって指定されるものと同一のパラメーターを使用できます。 使用可能なパラメーターの全一覧については、ドキュメントを参照してください。 Twilio ConsoleでAgent Conferenceをオンにできます。 |
通話をカンファレンスにしたいだけの場合は、全パラメーターがオプションのため下記を行うだけで可能です。
reservation.conference();
追加のオプションを組み込むには、以下のとおりに実行します。
reservation.conference( "18004746453", "WAxxx", "30", "client:joey", function(error, reservation) { if(error) { console.log(error.code); console.log(error.message); return; } console.log("conference initiated"); } );
Agent ConferenceのパラメーターをWorker Conferenceレグに接続したい場合は、下記のようにしてこれを実行できます:
var options = { "ConferenceStatusCallback": "https://requestb.in/wzfljiwz", "ConferenceStatusCallbackEvent": "start,end", "ConferenceRecord": "true", "ConferenceRecordingStatusCallback": "https://requestb.in/wzfljiwz", "EndConferenceOnExit": "true" } reservation.conference(null, null, null, null, null, options);
Agent ConferenceまたはそのパラメーターをWorker Conferenceレグ用に使用したくないが、オプションパラメーターを通じてカンファレンス設定を制御する場合、これも下記のように可能です:
var options = { "From": "18004746453", "PostWorkActivitySid": "WAxxx", "Timeout": "30", "To": "client:joey", "Record":"true", "ConferenceStatusCallback": "https://requestb.in/wzfljiwz", "ConferenceStatusCallbackEvent": "start,end,join,leave" } reservation.conference(null, null, null, null, null, options);
reservation.dequeue
Workerに対してReservationがQueueから外されます。
メモ: Enqueue TwiML動詞を使ってQueueに登録されたTaskをQueueから外すために、テレフォニーが行われます。
メモ: これは通話APIのTo
とみなされるため、通話が行われるには、Workerの属性に contact_uri
属性が含まれていなければなりません。
パラメーター
名前 | Type | 概要 |
---|---|---|
DequeueFrom | 文字列 | (オプション)Workerへの通話の発信者IDです。 これは、検証済みのTwilio電話番号である必要があります。 これを最初の発信先番号にする必要がある場合は、サポートにご連絡ください。 Enqueue動詞を使用して作成されたTaskで 「dequeueFrom」が指定されていない場合、発信者がダイヤルした「To」番号が、「dequeue」命令を実行する際に「dequeueFrom」番号として使用されます。 |
DequeuePostWorkActivitySid | 文字列 | (オプション)ReservationをQueueから外した後にWorkerを更新する先のactivitySidです。 |
DequeueRecord | 文字列 | (オプション)'record' 属性は、通話の両方のレグを録音できます。"record-from-answer" に設定すると、応答からの通話を録音します。初期値は、通話を録音しない "do-not-record" です。RecordingUrl が、status_callback_url により送信されます。 |
DequeueTimeout | 文字列 | (オプション)相手から応答がないと判断するまで、"contact_uri" に関連付けられている電話の呼び出し音を鳴らし続ける時間を、整数値(秒)で指定します。初期値は 60 秒です。最大値は 999 秒です。この値を 15 秒などの低い値に設定し、留守番電話やボイスメールにつながる前に電話を切ることができます。 |
DequeueStatusCallbackUrl | 文字列 | (オプション)通話完了Event発生時にTwilioが非同期webhookリクエストを送信する URL。**メモ: TaskRouterは、「taskCallSid」パラメーターとして、このTaskを作成した通話の sid を送信します。 これは、Workerへの通話が失敗した場合に非常に役に立ちます。このとき、Queueから元の通話を削除して、留守番電話に送信するか、または別のWorkerグループにルーティングする新しいWorkflowとしてQueueに入れることができます。 |
dequeueStatusCallbackEvents | 文字列 | (オプション) 上記のdequeueStatusCallbackUrlにどの通話進行Eventを送信するかを定義します。 既定では、通話の完了 (completed) Eventのみが送信されます。 すべてリッスンしたい場合は、「initiated,ringing,answered,completed」と指定してください。 各項目がカンマで区切られて入れば、順不同でも問題ありません。 |
DequeueTo | 文字列 | (オプション)Workerの連絡先URIです。 電話番号またはクライアントIDです。 Workerの属性に「contact_uri」プロパティが含まれない場合は必須です。 |
resultCallback | 関数 | (オプション)ReservationをQueueから外した結果、呼び出されるJavaScript関数です。 エラーが発生した場合は、この関数に最初に渡される引数がエラーになります。 更新が成功した場合は、最初の引数はnullになり、2番目の引数に更新されたReservationオブジェクトが渡されます。 |
通話をQueueから削除する場合は、すべてのパラメーターがオプションであるため、以下を実行するだけですみます。
reservation.dequeue();
追加のオプションを組み込むには、以下のとおりに実行します。
reservation.dequeue( "18004746453", "WAxxx", "record-from-answer", "30", "http://requestb.in/13285vq1", "client:joey", function(error, reservation) { if(error) { console.log(error.code); console.log(error.message); return; } console.log("reservation dequeued"); } );
reservation.call
Twilio 通話 API を使って、Workerに発信します。パラメーターの一致を把握できるよう、各JS SDKパラメーターがどの通話APIパラメーターにマッピングしているかを示すために、パラメーターにさらにもう1つ列が一覧されます。
注:CallToが指定されていない場合は、通話が行われるには、Workerの属性に contact_uri
属性が含まれている必要があります。この属性は、通話APIの To
と見なされるからです。
パラメーター
名前 | Type | 概要 | 通話 API パラメーター |
---|---|---|---|
CallFrom | 文字列 | Workerへの通話の発信者IDです | From |
CallUrl | 文字列 | 応答するWorkerのレグで実行する有効なTwiML URIです。 | Url |
CallStatusCallbackUrl | 文字列 | (オプション)有効なステータスコールバック URL。 | StatusCallback |
CallAccept | 文字列 | (optional) "true" or "false", accept the task before initiating call. Defaults to "false". Needs to be a string. Eg: "true", not true | |
CallRecord | 文字列 | (オプション) record-from-answer または false。 通話を録音します。 デフォルトは false です。 |
Record |
CallTo | 文字列 | (オプション)通話の相手先です。 指定しない場合は、Workerの contact_uri 属性が使用されます。 |
To |
resultCallback | 関数 | (オプション)ダイヤルの完了時に呼び出されるJavaScript関数です。 エラーが発生した場合は、この関数に最初に渡される引数がエラーになります。 通話が成功した場合は、最初の引数はnullになり、2番目の引数に更新されていないReservationオブジェクトが渡されます。 ただし、さらにアクションを利用することもできます。 下記を参照してください。 |
reservation.call( "18004746453", "http://twimlbin.com/451369ae", "http://requestb.in/13285vq1", "true", "record-from-answer", "client:joey" function(error, reservation) { if(error) { console.log(error.code); console.log(error.message); return; } console.log("reservation called the worker"); } );
コールバックを気にしなければ、以下だけで大丈夫です。
reservation.call( "18004746453", "http://twimlbin.com/451369ae", "http://requestb.in/13285vq1", "false");
ステータスコールバックを気にせずに、通話が橋渡しされた後にReservationを承諾する場合は、以下を行うことができます。
reservation.call( "18004746453", "http://twimlbin.com/451369ae", null, null, null, null, function(error, reservation) { if(error) { console.log(error.code); console.log(error.message); return; } reservation.accept(); } );
コールバックまたはステータスコールバックを気にせずに、通話が橋渡しされる前にReservationを承諾する場合は、以下を行うことができます。
reservation.call( "18004746453", "http://twimlbin.com/451369ae", null, "true");
reservation.redirect
Reservationに紐づけられたアクティブな通話をTwilio Calls APIを使用してリダイレクトします。 対応するパラメーターを把握できるように、どのCalls APIパラメーターがどのJS SDKパラメーターに対応しているかを示す列を追加しました。
パラメーター
名前 | Type | 概要 | 通話 API パラメーター |
---|---|---|---|
RedirectCallSid | 文字列 | リダイレクトする通話です | From |
RedirectUrl | 文字列 | リダイレクト時に発信者側のレグで実行され流、有効なTwiMLのURIです。 | Url |
RedirectAccept | 文字列 | (optional) "true" or "false", accept the task before initiating call. Defaults to "false". Needs to be a string. Eg: "true", not true | |
resultCallback | 関数 | (オプション) リダイレクト完了時に呼び出されるJavaScriptの関数です。 エラーが発生した場合は、この関数に渡される最初の引数はErrorになります。 呼び出しに成功すると、最初の引数はnullになり、2番目の引数には更新されていないReservationオブジェクトが含まれます。 しかしこれに対するアクションは依然として利用可能です。 下記を参照してください。 |
reservation.redirect( "CAxxxx", //redirectCallSid "https://handler.twilio.com/twiml/EH621f0e21da7ce5441f6ec6aacce64069", //redirectUrl "true", //redirectAccept function(error, reservation) { //resultCallback if(error) { console.log(error.code); console.log(error.message); return; } console.log("reservation call was redirected"); } );
メモ: 上記のサンプルで使用されているURLは、「Hello from Twiml」と再生される下記のTwiMLを返すTwiML Binを使用して作成されています。
<?xml version="1.0" encoding="UTF-8"?> <Response> <Say>Hello from Twilio!</Say> </Response>
ヘルプが必要ですか?
We all do sometimes; code is hard. Get help now from our support team, or lean on the wisdom of the crowd browsing the Twilio tag on Stack Overflow.