28 октября 2026 г.
Автор
Рецензент
Conversation Relay от Twilio позволяет создавать голосовые приложения в реальном времени, похожие на человеческую речь, с использованием больших языковых моделей (LLM) ИИ, к которым можно обращаться через Twilio Voice. Conversation Relay подключается к управляемому вами WebSocket, позволяя интегрировать выбранного провайдера LLM по быстрому двунаправленному соединению.
В этом руководстве демонстрируется базовая интеграция Claude, языковой модели Anthropic, с Twilio Voice с использованием Conversation Relay. К концу этого руководства у вас будет работающий голосовой ассистент Claude на базе сервера Node.js, который позволяет позвонить на номер телефона Twilio и пообщаться с моделью Anthropic!
Предварительные требования
Для развертывания этого руководства вам понадобятся:
- Node.js 24+ (я использовал 24.22.0 для создания этого руководства)
24+ (я использовал 24.22.0 для создания этого руководства)
- Аккаунт Twilio (вы можете зарегистрироваться бесплатно здесь) и номер телефона с поддержкой голосовой связи
Аккаунт Twilio (вы можете зарегистрироваться бесплатно здесь) и номер телефона с поддержкой голосовой связи
Аккаунт Anthropic и API-ключ
- Ngrok или другое решение для туннелирования, чтобы предоставить вашему локальному серверу доступ к интернету для тестирования
или другое решение для туннелирования, чтобы предоставить вашему локальному серверу доступ к интернету для тестирования
- Телефон для совершения исходящего вызова в Twilio
Телефон для совершения исходящего вызова в Twilio
- Ваш любимый редактор кода или IDE
Ваш любимый редактор кода или IDE
Перед использованием Conversation Relay вам необходимо пройти шаги адаптации (onboarding), а также согласиться с Дополнением к функциям предиктивного и генеративного ИИ/МО (Predictive and Generative AI/ML Features Addendum), если вы с ним согласны. В консоли Twilio перейдите в Communications > Voice > Settings > Privacy & Security. Дополнительные сведения см. в Руководстве по адаптации Conversation Relay.
Отлично! Давайте начнем.
Настройка проекта
В следующих шагах рассматриваются настройка проекта и зависимости, которые необходимо установить. Затем вы создадите код сервера (а я объясню наиболее интересные моменты).
Создание каталога проекта
Сначала создайте новую папку проекта:
Копировать код
Инициализация проекта Node.js
Затем инициализируйте новый проект Node.js и установите необходимые пакеты:
Копировать код
Вы будете использовать Fastify для создания сервера, который обрабатывает как WebSocket, необходимый для Conversation Relay, так и эндпоинт для инструкций Twilio, требуемый Twilio Voice. Вы будете использовать библиотеку TypeScript от Anthropic для управления беседой с Claude.
Настройка переменных окружения
Создайте файл .env для хранения вашего API-ключа Anthropic. Добавьте следующую строку:
Копировать код
Если вы работаете с git, добавьте .env в файл .gitignore, чтобы предотвратить раскрытие конфиденциальной информации.
Написание кода
Потрясающе, дело идет полным ходом. Перейдем к коду сервера.
Создайте файл с именем server.js и добавьте следующие импорты и константы:
Копировать код
Здесь вы заметите, что мы определяем WELCOME_GREETING. Это первое, что услышит человек при звонке вашему ассистенту.
Вы также заметите SYSTEM_PROMPT, который управляет поведением голосового ассистента. В нем мы сообщаем LLM о некоторых наших предпочтениях для беседы. Этот промпт просит LLM избегать специальных символов и записывать числа прописью, чтобы облегчить работу этапа преобразования текста в речь.
Реализация функции ответа ИИ
На следующем этапе вы определите, как ваше приложение подключается к API Anthropic и обрабатывает ответы. Вставьте этот код ниже предыдущего:
Копировать код
Здесь вы добавляете то, что необходимо для подключения к Anthropic. process.env.ANTHROPIC_API_KEY получит наш API-ключ из файла .env для аутентификации нашего использования Anthropic, после чего функция aiResponse используется для управления поведением каждого ответа LLM.
Для этой демонстрации вы будете использовать claude-sonnet-5-5 с низким уровнем усилий (low effort) для тестирования сборки. Вы можете найти поддерживаемые модели Claude в документации Anthropic.
Мы протестировали это руководство как с Claude Sonnet 5.5, так и с Claude Haiku 5.5, и обе модели хорошо справились с реальным голосовым общением при низком уровне усилий. В коде мы используем Sonnet 5.5, но правильный выбор зависит от вашего варианта использования. Таблица сравнения моделей Anthropic и руководство по выбору модели — отличные места для начала.
Настройка Fastify и определение маршрутов
Теперь, когда вы определили взаимодействие с Claude, пришло время перейти к Twilio. На этом шаге вы настроите два эндпоинта:
- /twiml — для управления поведением Twilio при входящем вызове на наш приобретенный номер. Здесь используется язык разметки Twilio Markup Language (TwiML) для дальнейших инструкций Twilio.
- /ws — для соединения WebSocket, которое Conversation Relay будет использовать для связи с вашим приложением. Здесь вы будете получать сообщения от Twilio, а также передавать сообщения от вашей LLM обратно в Twilio для запуска шага преобразования текста в речь (ретрансляции, если можно так выразиться).
Ниже кода с предыдущего шага вставьте следующее:
Копировать код
И это весь код, необходимый для базовой интеграции — теперь давайте запустим все и подключим к Twilio!
Запуск ngrok и сервера
Откройте терминал (или новую вкладку терминала) и запустите ngrok с помощью ngrok http 8080.
Скопируйте URL-адрес ngrok без схемы (то есть отбросьте «https://» или «http://») и обновите файл .env, добавив новую строку:
Копировать код
На этом скриншоте показан URL-адрес, который я выбрал для своей переменной окружения:
Наконец, запустите сервер. В исходном терминале (не в том, где запущен ngrok), выполните:
Копировать код
Настройка Twilio
В консоли Twilio настройте свой номер телефона с помощью веб-хука конфигурации голосовой связи (Voice Configuration Webhook) для события A калл поступает (A call comes in), установив значение https://[your-ngrok-subdomain].ngrok.app/twiml.
Вот пример из моей консоли:
Сохраните изменения, теперь вы готовы к тестированию.
Тестирование интеграции
Чувствуете ли вы трепет в предвкушении? Пора!
Позвоните на свой номер Twilio. ИИ должен поприветствовать вас сообщением WELCOME_MESSAGE и быть готовым к разговору — обязательно попросите его рассказать шутки про сову!
Дальнейшие шаги с Twilio и Claude
Я надеюсь, вам понравилась эта базовая интеграция Twilio Voice с Claude от Anthropic с использованием Conversation Relay — голосовая LLM по звонку менее чем за 100 строк кода!
Вероятно, далее вы захотите добавить более продвинутые функции. Наша последующая статья покажет вам, как передавать токены в реальном времени из Anthropic в Conversation Relay для уменьшения задержки, а также как лучше обрабатывать прерывания путем локального отслеживания беседы. А после этого я покажу вам основы вызова инструментов или функций с помощью Claude с использованием Conversation Relay.
Но до тех пор развлекайтесь с каркасом… ознакомьтесь с документацией по Conversation Relay от Twilio, документацией по API Anthropic и SDK TypeScript от Anthropic, чтобы узнать больше.
Пол Камп — технический главный редактор блога Twilio. Он с энтузиазмом обсуждал с LLM рецепты… но был немного разочарован тем, что успел приготовить лишь несколько предложений (когда же агенты начнут готовить еду?). Вы можете связаться с Полом по адресу pkamp [at] twilio.com.






