Качественное обслуживание клиентов становится сложнее, поскольку мир становится меньше, а способы, которыми клиенты хотят с вами связаться, увеличиваются. Надстройка 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 или отправьте мне электронное письмо.