メニュー

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?

タスクを作成して予約を受け入れる: REST APIを使用して予約を受け入れる

ワーカーがタスクを受諾または却下したことを示すために、予約インスタンスリソースに HTTP POST リクエストを発行します。 このためには、TaskSid (ウェブポータルで入手可能)と ReservationSid が必要です。 ReservationSid は、ワーカーをタスクに予約したときに、割り当てコールバック URL に渡されています。 http://localhost:4040 の ngrok 調査ページを使うと、TaskRouterから送信されたリクエストパラメーターを簡単に検索でき、ReservationSid をクリップボードにコピーできます。**

予約 API リソースは一時的なもので、タスクのコンテキスト内でのみ存在します。このため、固有のプライマリー API リソースはありません。リファレンスドキュメントの「Tasks」リソースセクションの説明を参照してください。

信頼できる TaskSid および ReservationSid を用意し、別のREST APIリクエストを発行してタスクの予約を受け入れます。 TwilioTaskRouterServlet にコードを追加して、Webサーバーで予約を受け入れられるようにしましょう。 中かっこに囲まれた箇所は、各自のアカウント詳細に書き換えてください。

TwilioTaskRouterServlet.java

import java.io.IOException;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.twilio.Twilio;
import com.twilio.rest.taskrouter.v1.workspace.Task;
import com.twilio.rest.taskrouter.v1.workspace.task.Reservation;

public class TwilioTaskRouterServlet extends HttpServlet {

  private String accountSid;
  private String authToken;
  private String workspaceSid;
  private String workflowSid;

  @Override
  public void init() {
    accountSid = this.getServletConfig().getInitParameter("AccountSid");
    authToken = this.getServletConfig().getInitParameter("AuthToken");
    workspaceSid = this.getServletConfig().getInitParameter("WorkspaceSid");
    workflowSid = this.getServletConfig().getInitParameter("WorkflowSid");

    Twilio.init(accountSid, authToken);
  }

  // service() responds to both GET and POST requests.
  // You can also use doGet() or doPost()
  @Override
  public void service(final HttpServletRequest request, final HttpServletResponse response)
      throws IOException {
    if (request.getPathInfo() == null || request.getPathInfo().isEmpty()) {
      return;
    }

    if (request.getPathInfo().equals("/assignment_callback")) {
      response.setContentType("application/json");
      response.getWriter().print("{}");
    } else if (request.getPathInfo().equals("/create_task")) {
      response.setContentType("application/json");
      response.getWriter().print(createTask());
    } else if (request.getPathInfo().equals("/accept_reservation")) {
      response.setContentType("application/json");
      final String taskSid = request.getParameter("TaskSid");
      final String reservationSid = request.getParameter("ReservationSid");
      response.getWriter().print(acceptReservation(taskSid, reservationSid));
    }
  }

  public String createTask() {
    String attributes = "{\"selected_language\":\"es\"}";

    Task task = Task.creator(workspaceSid, attributes, workflowSid).create();

    return "{\"task_sid\":\"" + task.getSid() + "\"}";
  }

  public String acceptReservation(final String taskSid, final String reservationSid) {
    Reservation reservation = Reservation.updater(workspaceSid, taskSid, reservationSid)
        .setReservationStatus(Reservation.Status.ACCEPTED)
        .update();

    return "{\"worker_name\":\"" + reservation.getWorkerName() + "\"}";
  }
}

curl を使いたい場合は、ターミナルに以下を取り込みます。

curl https://taskrouter.twilio.com/v1/Workspaces/{WorkspaceSid}/Tasks/{TaskSid}/Reservations/{ReservationSid} \
-d ReservationStatus=accepted \
-u {AccountSid}:{AuthToken}

TaskRouterからのレスポンスを確認すると、タスク予約が受諾され、ワーカー Alice にタスクが割り当てられたことがわかります。

{... "worker_name": "Alice", "reservation_status": "accepted", ...}

これが表示されない場合は、予約がタイムアウトになっている可能性があります。 このような場合は、ワーカーを空きのアクティビティー状態に戻し、別のタスクを作成します。 タイムアウトを防ぐには、ワークフロー構成で「タスク予約のタイムアウト」値を増加させます。

ワークスペースをTaskRouter Webポータルで開いた状態で、「Workers」をクリックすると、Aliceはタスクを割り当てたタスクキューの「Assignment Activity」に遷移していることがわかります。この場合は、「Busy」になります。

万歳! タスクのライフサイクルはこれで終わりです。

タスクを作成 → 適格なワーカーが対応可能になる → ワーカーを予約 → 予約を受諾 → タスクをワーカーに割り当てる

次のステップでは、一般的なタスクの受諾および却下のワークフローを行うための方法をさらに説明します。

次:割り当て命令を使って予約を受諾する »

** ngrok や類似ツールを使わない場合、assignment.php を変更して、ReservationSid の値をウェブサーバーログに出力できます。または、Tasks REST API インスタンスリソースを使って、TaskSid に基づき、ReservationSid を検索することができます。

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.