Интеграция Vonage (Nexmo) для голосового AI

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1 услугВсе 1566 услуг
Интеграция Vonage (Nexmo) для голосового AI
Средняя
от 1 недели до 3 месяцев
Часто задаваемые вопросы
Направления AI-разработки
Этапы разработки AI-решения
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1218
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    853
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1047
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    825

Интеграция Vonage (Nexmo) для голосового AI

Vonage Voice API (бывший Nexmo) — альтернатива Twilio с WebSocket API для Real-Time аудио. Сильные стороны: поддержка SIP, хорошее покрытие европейских номеров, конкурентные тарифы на исходящие звонки.

Архитектура интеграции

Vonage использует NCCO (Nexmo Call Control Objects) — JSON-управление звонком:

from fastapi import FastAPI, Request
from fastapi.responses import JSONResponse

app = FastAPI()

@app.get("/answer")
async def answer_call(uuid: str, conversation_uuid: str):
    """NCCO для входящего звонка"""
    return JSONResponse([
        {
            "action": "talk",
            "text": "Здравствуйте! Я голосовой ассистент.",
            "language": "ru-RU",
            "style": 4
        },
        {
            "action": "connect",
            "endpoint": [{
                "type": "websocket",
                "uri": f"wss://api.yourapp.com/voice-stream/{uuid}",
                "content-type": "audio/l16;rate=16000",
                "headers": {"call_id": uuid}
            }]
        }
    ])

@app.post("/events")
async def call_events(request: Request):
    data = await request.json()
    status = data.get("status")
    if status in ["completed", "failed"]:
        await cleanup_session(data.get("uuid"))
    return JSONResponse({"status": "ok"})

WebSocket обработчик

from fastapi import WebSocket

@app.websocket("/voice-stream/{call_id}")
async def voice_stream(websocket: WebSocket, call_id: str):
    await websocket.accept()
    session = VoiceSession(call_id)

    try:
        async for message in websocket.iter_bytes():
            # Vonage отправляет PCM 16-bit 16kHz
            pcm_audio = message

            # Обрабатываем аудио через наш AI pipeline
            response_text = await process_audio(pcm_audio, session)

            if response_text:
                audio_response = await synthesize(response_text)
                await websocket.send_bytes(audio_response)

    except Exception as e:
        logger.error(f"WebSocket error: {e}")
    finally:
        await session.finalize()

Отправка событий и управление звонком

import vonage

client = vonage.Client(key=VONAGE_KEY, secret=VONAGE_SECRET)
voice = vonage.Voice(client)

def transfer_to_agent(call_uuid: str, agent_number: str):
    """Перевод на оператора"""
    voice.update_call(call_uuid, {
        "action": "transfer",
        "destination": {
            "type": "ncco",
            "ncco": [{
                "action": "connect",
                "endpoint": [{"type": "phone", "number": agent_number}]
            }]
        }
    })

Стоимость: входящий ~€0.0061/мин, исходящий зависит от страны назначения.

Сроки: базовая интеграция — 1–2 недели. Full production — 1.5–2 месяца.