Crmgo Blog

Asterisk, povratni poziv

Asterisk, povratni poziv

Позив се усмерава на спољни број -> АТС враћа повратни позив -> бирамо унутрашњи број корисника -> комуницирамо преко излазног транка ка АТС-у. Шта нам је потребно: Неколико редова диалплан-а који ће обрадити долазни и одлазни позив. Скрипта за генерисање .call фајла.

Asterisk, povratni poziv

Позвонить на внешний номер -> АТС перезванивает обратно -> набираем внутренний номер абонента -> общаемся за через исходящий с транка на АТС.

что нам потребуется:
Пара строчек диалплана, которые будут обрабатывать входящее соединение и исходящее соединение
Скрипт генерации .call файла.

И так. Первым шагом нам нужно… закончить звонок:

[callback-context]
exten => _7XXXXX.,1,Hangup

Далее вся обработка (какое слово громкое- обработка… Так… Обработочка) будет происходить в ексеншне «h» этого же контекста, так как трубку мы уже положили.
Запускаем скрипт по созданию .call файла.

exten => h,1,System(/usr/local/scripts/callback.sh ${CALLERID(num)})

Сам скрипт выглядит вот так:

#!/bin/bash

callee=$1

Channel="SIP/"$callee
MaxRetries=10
RetryTime=10
WaitTime=20
Context="call-to"
Extension="callback"
Priority=1
DATA=`date`

echo "Channel: $Channel
CallerId: EXTERNAL_PBX_NUM <EXTERNAL_PBX_NUM>
MaxRetries: $MaxRetries
RetryTime: $RetryTime
WaitTime: $WaitTime
Context: $Context
Extension: $Extension
Priority: $Priority"  > /var/spool/asterisk/outgoing/$callee.call

Скрипт перезвонит тому кто вызывал АТС и после того как он поднимет трубку переведет канал в контекст call-to на extension callback для обработки:
В данном контексте мы проиграем файл приветствия и приглашения к вводу номера (для тех кто будет заниматься капипастой — имя файла кастомное. По умолчанию в Asterisk этого файла нет. Запишите свой или используйте стандартный ) будем ожидать ввода номера на который необходимо позвонить который должен состоять из — Максимум 4, ожидать мы будем 5 секунд и дадим только 1 попытку на ввод.

После ввода номера звоним на него и соединяем 2 канала в бридж функцией Dial.

[call-to] exten => callback,1,Read(NUM,input-number,4,n,1,5) exten => callback,n,DIAL(PJSIP/${NUM})

Таким образом мы звоним на внутренний номер не за свой счет, а за счет АТС.

Napomena: tekst može biti uz pomoć AI uz ljudsku proveru. Odgovoran: Dmytro Lomaka, Kaltenkirchen.