メニュー

Rate this page:

Thanks for rating this page!

We are always striving to improve our documentation quality, and your feedback is valuable to us. How could this documentation serve you better?

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.20/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です。
        region 文字列 (optional) A Twilio region for websocket connections (ex. ie1-ix).
        maxRetries integer (optional) The maximum of retries to attempt if a websocket request fails. Defaults to 0.

        使用例

        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

        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>
        
        Rate this page:

        ヘルプが必要ですか?

        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.