メニュー

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 の予約サブリソースを使ってタスクを作成し、これを受諾したときのことを覚えていますか? 覚えています。素晴らしいものでしたね。

今回は、REST API を使ってタスクをもう 1 つ作成しますが、通知を受けたら直ちに同期 HTTP レスポンスを介してサーバーに予約を受諾させます。

次のタスクを作成する前に、ワーカーの Alice が対応不可のアクティビティー状態であることを再度確かめてください。

TwilioTaskRouterServlet によって公開されたタスクの作成エンドポイントを再度呼ぶか、下記のcURLコマンドを実行します。

curl https://taskrouter.twilio.com/v1/Workspaces/{WorkspaceSid}/Tasks \
--data-urlencode Attributes='{"selected_language": "es"}' \
-d WorkflowSid={WorkflowSid} \
-u {AccountSid}:{AuthToken}

今回はAliceをオンラインにする前に、 TwilioTaskRouterServlet 内の assignment_callback メソッドに変更を加えることが必要です。 ファイルを開き、既存のコードを下記のとおりに変更しましょう。

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() + "\"}";
  }
}

以前のように空のJSONドキュメントを返すのではなく、「assignment instruction」をレスポンスに取り込みます。 「accept」割り当て命令により、予約を自動的に受諾し、予約を受けたワーカーにタスクを割り当てるようにTaskRouterが指示されます。

このプロセスを始めるには、Alice を対応可能なアクティビティーに遷移させる必要があります。 ワークスペースをTaskRouter Webポータルで開いた状態で、「Workers」をクリックした後、「Alice」をクリックして、アクティビティーを「Idle」に設定するように編集します。

これで、メインナビゲーションで「Tasks」をクリックすると、タスクの割り当てステータスが「assigned」になっているはずです。

実際に何が行ったのか見ていると、ごく短時間Aliceが予約されていました。 TaskRouterが割り当てコールバック URL でウェブサーバーにリクエストを発行し、サーバーは予約を受諾するようにTaskRouterに指示しました。 この時点で、Alice のアクティビティーは、前のステップの場合と同様、タスクを割り当てるタスクキューの「Assignment Activity」に遷移しました。

これでおしまいです。REST API を使ってタスクをもう 1 つ作成し、ワークフローの割り当てコールバック URL で割り当て命令を介してこれを受諾しました。その結果、ワーカーの予約がすぐに受諾されました。

先に進みましょう! 次は、Twilio 通話からタスクを作成するためのショートカットについて学びます。

Part 3: TwiMLを使って通話を行うタスクを作成する »

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.