Level up your Twilio API skills in TwilioQuest, an educational game for Mac, Windows, and Linux. Download Now

メニュー

Expand
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を使用してタスクを作成する

TaskRouterのタスクライフサイクルを思い出してください。

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

最初のタスクを作成する前に、ワーカーの Alice が対応不可のアクティビティー状態であることを再度確かめてください。ここでは Bob が対応できないスペイン語のタスクを作成するため、現時点では Bob のアクティビティー状態は問題になりません。

ワークスペースをTaskRouter Webポータルで開いた状態で、「Workers」をクリックした後、「Alice」をクリックして、アクティビティーを「Offline」に設定するように編集します。 ワーカーは以下のようになります。

実際の動作を模擬するにあたって、WebポータルではなくREST APIを使用してタスクを作成しましょう。 TwilioTaskRouterServlet にコードを追加して、Webサーバーでタスクを追加します。 web.xml 中の {} をTwilioのアカウントSID、認証トークン、ワークスペースSID、およびワークフローSIDに置き換えてください。

TwilioのJavaヘルパーライブラリー  をダウンロード、展開します。 開発中のWebアプリケーション・ライブラリーに最新のjarを依存関係とともにインストールします。 (Tomcatについては、taskrouter/WEB-INF/lib となります)

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;


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

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

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

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

taskrouter/WEB-INF/web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">

    <display-name>Twilio TaskRouter App</display-name>

    <servlet>
        <servlet-name>TwilioTaskRouterServlet</servlet-name>
        <servlet-class>com.twilio.TwilioTaskRouterServlet</servlet-class>
        <init-param>
            <param-name>AccountSid</param-name>
            <param-value>{{ account_sid }}</param-value>
        </init-param>
        <init-param>
            <param-name>AuthToken</param-name>
            <param-value>{{ auth_token }}</param-value>
        </init-param>
        <init-param>
            <param-name>WorkspaceSid</param-name>
            <param-value>{{ workspace_sid }}</param-value>
        </init-param>
        <init-param>
            <param-name>WorkflowSid</param-name>
            <param-value>{{ workflow_sid }}</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>TwilioTaskRouterServlet</servlet-name>
        <url-pattern>/taskrouter/*</url-pattern>
    </servlet-mapping>

</web-app>

または、コマンドラインユーティリティー curl を使ってタスクを作成することもできます。このユーティリティーは、Mac または Linux のどのワークステーションにもあるはずです。この場合も、{} を各自の対応するクレデンシャルと SID に書き換えてから、ターミナルで以下のコマンドを実行してください。

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

Twilio AccountSidおよびAuthTokenは、TaskRouterの「Getting Started」ページで「show API credentials」をクリックすると、表示されます。

If you don't have curl, you can run this request using an HTTP test tool or using the Task creation dialog in the TaskRouter web portal: with your Workspace open, click 'Tasks' then 'Create Task'.

新たに作成したタスクをTaskRouter Webポータルに表示するには、ワークスペースを開いた状態で、メインナビゲーションで「Tasks」をクリックします。 curl リクエストで指定した属性に基づき、「Customer Care Requests - Spanish」タスクキューにタスクが追加されています。 このタスクキューに該当する対応可能なワーカーがいないため、割り当てステータスは「pending」になっています。

適格なワーカーを対応可能にする

もう一度TaskRouterのタスクライフサイクルを見てみましょう。

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

最初のステージである「タスクを作成」は完了しました。自動的なタスク予約をトリガーするため、次のステップでは適格なワーカー(このケースでは Alice)をオンラインにします。

ワークスペースをTaskRouterウェブポータル で開いた状態で、「Workers」をクリックした後、「Alice」をクリックして、アクティビティーを「Idle」に設定するように編集します。

「Save」をクリックすると、Twilio は Alice とタスクの間に予約を作成します。これにより、前のステップでセットアップした割り当てコールバック URL でウェブホックリクエストが送られます。ngrok をお使いの場合は、ウェブブラウザーで http://localhost:4040 を開くと、Twilio がサーバーに発行したリクエストの詳しいログ(予約を受諾するかどうか決定するためにサーバーが使うあらゆるパラメーターなど)が表示されます。

これで、タスク予約ライフサイクルがワンステップ先に進みました。

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

次は、予約を受諾する番です。

次:REST API を使って予約を受諾する »

Rate this page:

ヘルプが必要ですか?

誰しもが一度は考える「コーディングって難しい」。そんな時は、お問い合わせフォームから質問してください。 または、Stack Overflow でTwilioタグのついた情報から欲しいものを探してみましょう。