如何在 Twilio 上向特定工作人员提供任务
How to offer a task to a specific worker on Twilio
我正在使用 Twilio 的 TasksRouter。
我的工作区中有 3 个 TaskQueues,新任务被转发到正确的 TaskQueue,但我也希望将它们提供给该队列中的特定工作人员。
我认为任务属性应该可以做到这一点,但即使我的任务具有 {user_id: 123}
等属性,该任务仍会提供给具有 {user_id: 999}
[=12= 等属性的工作人员]
这是正确的做法吗?我还能如何向特定工作人员提供任务?
谢谢!
此处为 Twilio 开发人员布道师。
为了将任务发送给特定的工作人员,您需要 set up a condition in your TaskRouter workflow 基于您为任务指定的 user_id
属性。您可以将其设置为匹配属性并将任务定向到仅由该工作人员管理的队列。
我是通过 reservation.created 事件做到的。我使用标准工作流和任务队列,然后以编程方式拒绝所有预订,直到预订由正确的代理完成,然后我接受它。
在 Twilkio 控制台的 TaskRouter UI 中,我在 reservation.created
事件上添加了一个 webhook,指向我的服务器。然后请求按如下方式处理:
@app.route('/hook/reservation', methods=['POST'])
def fn_th_reservation():
task_attributes = json.loads(request.form['TaskAttributes'])
channel_sid = task_attributes["channelSid"]
worker_sid = request.form['WorkerSid']
reservation_sid = request.form["ReservationSid"]
workspace_sid = request.form["WorkspaceSid"]
task_sid = request.form["TaskSid"]
# implement app specific logic here. you can use channel_sid and
# worker_sid to compare them to a mapping from you database for instance
is_right_worker = ...
reservation_status = 'accepted' if is_right_worker else 'rejected'
client = Client(account_sid, auth_token)
# accept or reject reservation
reservation = client.taskrouter.workspaces(workspace_sid) \
.tasks(task_sid).reservations(reservation_sid) \
.update(reservation_status=reservation_status)
print(reservation.worker_name)
print(reservation.reservation_status)
return('200')
只需确保您不会通过拒绝每个工作人员来创建无限循环
我正在使用 Twilio 的 TasksRouter。
我的工作区中有 3 个 TaskQueues,新任务被转发到正确的 TaskQueue,但我也希望将它们提供给该队列中的特定工作人员。
我认为任务属性应该可以做到这一点,但即使我的任务具有 {user_id: 123}
等属性,该任务仍会提供给具有 {user_id: 999}
[=12= 等属性的工作人员]
这是正确的做法吗?我还能如何向特定工作人员提供任务?
谢谢!
此处为 Twilio 开发人员布道师。
为了将任务发送给特定的工作人员,您需要 set up a condition in your TaskRouter workflow 基于您为任务指定的 user_id
属性。您可以将其设置为匹配属性并将任务定向到仅由该工作人员管理的队列。
我是通过 reservation.created 事件做到的。我使用标准工作流和任务队列,然后以编程方式拒绝所有预订,直到预订由正确的代理完成,然后我接受它。
在 Twilkio 控制台的 TaskRouter UI 中,我在 reservation.created
事件上添加了一个 webhook,指向我的服务器。然后请求按如下方式处理:
@app.route('/hook/reservation', methods=['POST'])
def fn_th_reservation():
task_attributes = json.loads(request.form['TaskAttributes'])
channel_sid = task_attributes["channelSid"]
worker_sid = request.form['WorkerSid']
reservation_sid = request.form["ReservationSid"]
workspace_sid = request.form["WorkspaceSid"]
task_sid = request.form["TaskSid"]
# implement app specific logic here. you can use channel_sid and
# worker_sid to compare them to a mapping from you database for instance
is_right_worker = ...
reservation_status = 'accepted' if is_right_worker else 'rejected'
client = Client(account_sid, auth_token)
# accept or reject reservation
reservation = client.taskrouter.workspaces(workspace_sid) \
.tasks(task_sid).reservations(reservation_sid) \
.update(reservation_status=reservation_status)
print(reservation.worker_name)
print(reservation.reservation_status)
return('200')
只需确保您不会通过拒绝每个工作人员来创建无限循环