Маршрутизация обращений поддержки по языку с помощью TaskRouter и IBM Watson

Автор: | 05.08.2026

Качественное обслуживание клиентов становится сложнее, поскольку мир становится меньше, а способы, которыми клиенты хотят с вами связаться, увеличиваются. Надстройка IBM Watson Message Insights из маркетплейса надстроек Twilio определяет язык текстового сообщения, чтобы вы могли улучшить свою службу поддержки и обслуживать клиентов на их родном языке.

Давайте посмотрим, как вы можете объединить Watson, Programmable SMS и TaskRouter с щепоткой ASP.NET и C#, чтобы беспрепятственно маршрутизировать входящие SMS-сообщения наиболее подходящему агенту в вашей команде.

Если вы хотите попробовать и у вас еще нет учетной записи Twilio, получить ее можно быстро. Если вы хотите перейти вперед, ознакомьтесь с полным кодом на Github, в противном случае давайте начнем!

Маркетплейс надстроек Twilio позволяет добавлять функциональность сторонних сервисов в ваши голосовые и SMS-приложения простым переключением тумблера в консоли Twilio. Давайте включим надстройку IBM Watson Message Insights на панели управления надстройками Programmable SMS.

Нажмите кнопку «Установить», затем установите флажок «Использовать в: Входящие SMS-сообщения» — и готово! Таким образом, каждое входящее сообщение, которое вы получаете в свою учетную запись Twilio, будет обрабатываться Message Insights. Полученные данные, которые, помимо прочего, включают язык текста сообщения, автоматически включаются в запрос веб-хука, который Twilio отправляет в ваше приложение. Довольно круто, не правда ли?

После установки Message Insights давайте создадим простое веб-приложение, которое может принимать входящие SMS-сообщения и использовать данные Message Insights для отправки ответа на том же языке, что и входящее сообщение.

В Visual Studio создайте новый проект ASP.NET MVC и добавьте в него пакет Nuget Twilio.Mvc. Добавьте новый файл контроллера в проект и измените его, чтобы он наследовался от базового класса `TwilioController`. Затем добавьте метод действия, который имеет два строковых параметра: `Body` и `AddOns`.

Параметр `Body` содержит текст, отправленный в SMS-сообщении. Параметр `AddOns` содержит сериализованный JSON-объект, который содержит данные, добавленные в запрос веб-хука любой установленной вами SMS-надстройкой, включая данные от Messaging Insights.

Десериализуйте содержимое JSON надстройки в тип `dynamic` с помощью Json.NET:

Убедитесь, что все SMS-надстройки выполнились успешно, и на всякий случай ответьте на SMS, чтобы сообщить пользователю, что что-то пошло не так:

Если надстройки успешны, получите язык текста сообщения, как сообщает Message Insights, и используйте его для выбора соответствующего языкового ответа:

На данный момент это весь необходимый код. Прежде чем тестировать приложение, нам нужно развернуть его на хостинге, например Azure, или использовать инструмент, такой как ngrok, для предоставления доступа к приложению через общедоступный URL-адрес. Назначьте этот URL-адрес как URL запроса сообщения для телефонного номера Twilio, не забыв добавить маршрут метода действия `Message` к вашему URL ngrok:

Чтобы протестировать приложение, отправьте текстовое сообщение на ваш номер Twilio на испанском языке и посмотрите, какой ответ вы получите.

`»Hey allí. Estoy teniendo un problema con mi widget. ¿Alguien que me puedeayudar?»`

Вы должны получить ответ на испанском языке. Попробуйте отправить то же сообщение на английском языке.

`»Hey there. I’m having a problem with my widget. Can someone there help me out?»`

На этот раз вы должны получить ответ на английском языке.

Отлично! Теперь, когда мы можем принимать входящие SMS-сообщения и определять язык текста сообщения, мы можем использовать эту информацию для маршрутизации этих сообщений соответствующему сотруднику с помощью TaskRouter.

Давайте начнем с настройки простой конфигурации TaskRouter. Войдите в консоль Twilio и откройте панель управления TaskRouter. Создайте новое рабочее пространство:

Рабочее пространство — это контейнер для всех компонентов TaskRouter. Откройте созданное вами рабочее пространство и выберите очереди задач (TaskQueues). Создайте новую очередь задач для каждого языка, который вы хотите поддерживать. В моем приложении я создал две: одну для английского и одну для испанского.

Для каждой очереди задач настройте свойство «Целевые сотрудники» (Target Workers) с правилом, которое очередь может использовать для поиска сотрудников, обладающих языковыми навыками, необходимыми для помощи клиентам в этой очереди.

В рамках рабочего процесса мы определим фильтры, которые сообщают TaskRouter, в какую очередь задач (TaskQueue) поместить входящую задачу на основе данных, которые мы включаем в задачу. Для нашего приложения эти данные — язык входящего текстового сообщения, поэтому мы создадим два фильтра: один для английского и один для испанского.

Выражение фильтра (Filter Expression) позволяет определить набор правил, которые TaskRouter использует для определения того, должна ли задача быть помещена в определенную очередь задач. В нашем случае фильтр «Английский язык» использует выражение

`language == «english»`

и устанавливает целевую очередь задач на «Запросы по обслуживанию клиентов — английский» (Customer Care Requests – English). Фильтр «Испанский язык» использует выражение

`language == «spanish»`

и устанавливает целевую очередь задач на «Запросы по обслуживанию клиентов — испанский» (Customer Care Requests – Spanish).

Мы настроим очередь задач по умолчанию для всего рабочего процесса. Любая задача, язык которой не соответствует ни одному из определенных фильтров, будет поставлена в очередь в эту очередь задач:

Наконец, нам нужно создать сотрудников, которые могут принимать и обрабатывать задачи из наших очередей задач. Для каждого сотрудника мы определяем в виде JSON-объекта набор атрибутов, которые TaskRouter использует для определения того, имеет ли этот сотрудник право принимать задачи из данной очереди задач. В нашем сценарии один из этих навыков —

`languages`:

Поскольку Алиса говорит как на английском, так и на испанском, она имеет право принимать задачи из любой из наших двух очередей задач.

Создайте еще одного сотрудника, «Боба», и настройте его для поддержки только английского языка:

`{«languages»:[«en»]}`

Отлично! Мы закончили настройку TaskRouter. Давайте посмотрим, как создавать новые задачи при получении входящего SMS-сообщения, а затем использовать языковые данные из Message Insights для маршрутизации задачи соответствующему квалифицированному сотруднику.

Создавайте задачи TaskRouter в нашем приложении ASP.NET, сначала установив пакет Nuget Twilio.TaskRouter. В методе действия `Message` создайте экземпляр объекта `TaskRouterClient`, передав в качестве параметров идентификатор учетной записи Twilio (AccountSid) и токен аутентификации (AuthToken). Затем вызовите метод `AddTask`:

Обратите внимание, что метод `AddTask` принимает в качестве второго параметра JSON-форматированную строку атрибутов. Рабочий процесс, который мы создали, использует эти атрибуты для определения того, в какую очередь задач поместить задачу. Здесь мы включаем атрибут с именем `language` и устанавливаем значение этого атрибута равным языку, предоставленному нам Messaging Insights.

После настройки TaskRouter давайте попробуем отправить некоторые сообщения, начиная с испанского.

`»Hey allí. Estoy teniendo un problema con mi widget. ¿Alguien que me puedeayudar?»`

Вы должны увидеть, что TaskRouter правильно направил новую задачу в очередь задач на испанском языке и установил ее статус назначения («Assignment Status») на «Reserved»:

Переключитесь, чтобы посмотреть на сотрудников, и вы увидите, что Алиса, наш единственный испаноязычный сотрудник, имеет статус «Reserved», так что мы знаем, что ей была назначена эта задача.

Попробуйте отправить то же сообщение на этот раз на английском языке.

`»Hey there. I’m having a problem with my widget. Can someone there help me out?»`

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

Существует множество других очень интересных надстроек, которые позволяют быстро и без проблем добавлять дополнительные метаданные к сообщениям и телефонным номерам. Например, ознакомьтесь с работой моего друга Фила по анализу настроений в SMS-сообщениях.

Кроме того, TaskRouter упрощает маршрутизацию задач на основе навыков ваших доступных ресурсов — и это не только для SMS-сообщений. Вы можете ставить в очередь и маршрутизировать звонки, твиты, сообщения Facebook или практически любую другую форму цифровой коммуникации с клиентами, используя TaskRouter.

Дайте мне знать, как вы используете надстройки или TaskRouter в своих приложениях. Оставьте комментарий ниже, свяжитесь со мной в Twitter или отправьте мне электронное письмо.