Інтеграція Asterisk/FreePBX з AI для обробки дзвінків Asterisk - open-source АТС з величезною екосистемою. Інтеграція з AI дозволяє додати розпізнавання мови та синтез до існуючої телефонної інфраструктури без заміни всієї платформи. Популярний вибір для on-premise розгортання. ### Методи інтеграції Asterisk + AI AGI (Asterisk Gateway Interface) — скрипт запускається при вхідному дзвінку:```python
agi_bot.py - AGI скрипт
import sys from asterisk.agi import AGI
agi = AGI() agi.answer() agi.set_variable("CHANNEL(audioreadformat)", "slin16")
Запись аудио от пользователя
agi.record_file( "/tmp/user_audio", "wav", "#", # stop key 3000, # timeout ms 0, # offset True, # beep 3 # silence threshold )
STT + LLM + TTS в отдельном сервисе
import requests with open("/tmp/user_audio.wav", "rb") as f: stt_response = requests.post("http://ai-service/stt", files={"audio": f}) transcript = stt_response.json()["text"]
llm_response = requests.post("http://ai-service/chat", json={"text": transcript}) response_text = llm_response.json()["response"]
tts_response = requests.post("http://ai-service/tts", json={"text": response_text}) with open("/tmp/response.wav", "wb") as f: f.write(tts_response.content)
agi.stream_file("/tmp/response")
**ARI (Asterisk REST Interface)** — потужніший підхід для real-time:python
import asyncio
import aiohttp
from ari_client import ARIClient
async def handle_stasis(channel_id: str, ari: ARIClient): """Обработчик входящего звонка через ARI""" await ari.answer(channel_id)
# Создаём снэпшот аудио канала
await ari.channel.record(
channelId=channel_id,
name=f"call_{channel_id}",
format="wav",
terminateOn="silence",
maxSilenceSeconds=2
)
### Діалплан Asteriskini
; extensions.conf
[ai-bot-context]
exten => _X.,1,NoOp(Входящий звонок)
same => n,Answer()
same => n,AGI(agi://127.0.0.1/ai_bot)
same => n,Hangup()
### FreePBX IVR через AGI FreePBX надає веб-інтерфейс для налаштування, а AGI додає AI-логіку:python
Заменяем стандартные IVR-пункты на AI-распознавание
вместо "нажмите 1" → "скажите что хотите"







