OpenAI сделала исходящие SIP-звонки доступными всем организациям через Live API. Телефонный вызов соединяется с GPT-Live через SIP-trunk провайдера вроде Twilio: провайдер обменивается аудио с OpenAI, а backend приложения настраивает сессию, управляет вызовом и выполняет бизнес-логику. Сигнализация SIP использует TLS, а аудио требует SDES-SRTP.
Для исходящего вызова приложение отправляет запрос Create session с параметрами модели, голоса, delegation и transport. Указываются номер назначения и caller number в формате E.164, адрес провайдера с sips и SIP Digest credentials. Адрес назначения должен быть телефонным номером, SIP URI не поддерживаются. Формат аудио задавать не нужно: его согласует SIP.
Ответ 200 OK означает только инициализацию сессии, а не ответ абонента. Для отслеживания прогресса backend сразу подключается к sideband WebSocket с полученным session ID. SIP продолжает переносить аудио, а sideband доставляет transcripts, события ringing, answered и failed, delegated work, tools и команды. Повторять session.start не требуется. Sideband воспроизводит события лишь за предыдущие три секунды, поэтому позднее подключение может пропустить ранние этапы вызова.
Для входящих звонков сохраняется другой поток: провайдер направляет trunk на endpoint проекта OpenAI, webhook live.transport.incoming сообщает session ID, после чего backend принимает или отклоняет вызов. SIP headers считаются недоверенными метаданными и не должны использоваться для авторизации. Подпись webhook проверяется, повторные доставки устраняются по webhook ID, а одно действие должно иметь одного обработчика, чтобы не запускать tools дважды.
Оба направления поддерживают DTMF, перевод вызова и завершение через call controls. Ringing ограничен тремя минутами, соединённый разговор — двумя часами; изменить эти значения при создании нельзя. После успешного создания ошибки установки transport приходят асинхронно через transport.failed.
Сетевой доступ нужно настроить отдельно для сигнализации и медиа: SIP использует TCP/TLS на порту 5061, а SRTP — двунаправленный UDP к адресам и портам из SDP. Ключи OpenAI API и учётные данные SIP должны оставаться на доверенном сервере приложения.