Справочник сотрудников с использованием Ruby и Rails

Автор: | 08.08.2026

Вот как это работает на высоком уровне:

— Пользователь отправляет SMS с именем сотрудника на номер Twilio.

— Пользователь получает информацию о запрошенном сотруднике.

`/directory/search`

запрашивает инструкции TwiML.

Давайте подробнее рассмотрим каждый из сценариев.

Это самый простой сценарий. Мы делаем запрос к нашей базе данных, ожидая найти сотрудника, чье имя и фамилия точно совпадают с теми, которые мы указали в SMS, отправленном на наш номер Twilio. Если совпадение найдено, сообщение, содержащее информацию об этом сотруднике, формируется и отправляется в Twilio как инструкции TwiML.

Если точное совпадение не найдено, мы попытаемся найти частичное совпадение. Это наш следующий возможный сценарий.

Если в базе данных не найдено точное совпадение для сотрудника, мы попытаемся найти близкое совпадение с помощью гема Fuzzily. В этом сценарии мы проверим, что получено только 1 частичное совпадение. Когда найдено одно частичное совпадение, пользователь получит предложение, содержащее его. Пользователю будет предоставлена возможность ответить словом `yes`

на это SMS. В этом случае пользователь получит информацию о выбранном сотруднике.

Мы покажем вам, как предложения сохраняются для SMS-разговора с использованием Twilio Cookies, чуть позже.

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

На этом этапе мы уже попытались использовать запрос пользователя как точное совпадение с сотрудником и как одно частичное совпадение. Теперь мы попытаемся получить частичное совпадение, которое возвращает более одного результата. Как и в предыдущем сценарии, мы будем использовать Twilio Cookies для хранения предложений. Единственное отличие здесь заключается в том, что нам нужно сохранить Hash, содержащий индекс предложений, чтобы пользователь мог ответить числом, ссылающимся на одно из предложений, чтобы получить всю информацию о сотруднике.

Последний сценарий прост. Если ни один из предыдущих сценариев не произошел, это означает, что в базе данных нет сотрудника, который соответствует запросу пользователя. В этом случае пользователю будет отправлен ответ с объяснением, что его запрос не соответствует ни одному из сотрудников, найденных в базе данных.

Теперь, когда у нас есть полная функциональность поиска, давайте посмотрим, как мы можем оптимизировать её, кэшируя поисковые предложения в cookies браузера.

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

Мы будем использовать Twilio Cookies для хранения предложений. Они позволят вам отслеживать SMS-разговор между несколькими номерами и вашим приложением на базе Twilio.

Вот и всё! Мы только что реализовали справочник сотрудников с использованием Ruby on Rails. Теперь вы можете получить информацию о сотруднике, отправив SMS на номер Twilio.

Если вы Ruby-разработчик, работающий с Twilio, вам также могут понравиться эти руководства:

Узнайте, как использовать Twilio Client для легких звонков из браузера на телефон и между браузерами.

Узнайте, как реализовать ETA-уведомления с использованием Ruby on Rails и Twilio.

#### Помогло ли это?