Как предложить задание конкретному работнику на Twilio - PullRequest
0 голосов
/ 28 октября 2018

Я использую TasksRouter от Twilio.

У меня есть 3 TaskQueues в моей рабочей области, и новые задачи перенаправляются в правильное TaskQueue, но я также хотел бы, чтобы их предлагали конкретному работнику в этой очереди.

Я думал, что атрибуты задачи должны делать это, но даже когда моя задача имеет такие атрибуты, как {user_id: 123}, задача все еще предлагается работнику с такими атрибутами, как {user_id: 999}

Isчто правильный подход?Как еще я могу предложить задание конкретному работнику?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 04 июля 2019

Я сделал это с помощью события booking.created .Я использую стандартный рабочий процесс и очередь задач, а затем программно отклоняю все резервирования, пока резервирование не будет выполнено с помощью правильного агента, а затем принимаю его.

В пользовательском интерфейсе TaskRouter в консоли Twilkio я добавил веб-крючок на reservation.created событие, указывающее на мой сервер.Затем запрос обрабатывается следующим образом:

@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')

просто убедитесь, что вы не создаете бесконечный цикл, отклоняя каждого работника

0 голосов
/ 29 октября 2018

Twilio developer evangelist здесь.

Чтобы отправить задание конкретному работнику, вам необходимо настроить условие в рабочем процессе TaskRouter на основе атрибута user_id, который выдали задание.Вы можете установить его в соответствии с атрибутом и направить задачу в очередь, в которой находится только этот работник.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...