Crmgo Blog

Asterisk, zpětné volání

Asterisk, zpětné volání

Dovolá se na externí číslo -> PBX zavolá zpět -> vytočíme interní číslo uživatele -> komunikujeme přes outgoing trunk na PBX. Co budeme potřebovat: Pár řádků dialplanu, které budou zpracovávat příchozí a odchozí spojení. Skript pro generování .call souboru.

Asterisk, zpětné volání

Volá na externí číslo -> ústředna volá zpět -> vytočíme interní číslo uživatele -> komunikujeme přes outgoing kanál z trunku na ústřednu.

co budeme potřebovat:
Pár řádků dialplanu, které budou zpracovávat příchozí a odchozí spojení
Skript pro generování .call souboru.

A tedy. Prvním krokem musíme… ukončit hovor:

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

Dále veškeré zpracování (jaké velké slovo – zpracování… Takže… Zpracovávačka) bude probíhat v extension „h“ tohoto stejného kontextu, protože sluchátko jsme již položili.
Spustíme skript pro vytvoření .call souboru.

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

Samotný skript vypadá takto:

#!/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

Skript zavolá zpět tomu, kdo volal ústřednu, a po zvednutí sluchátka přesměruje kanál do kontextu call-to na extension callback pro zpracování:
V tomto kontextu přehrajeme uvítací soubor a výzvu k zadání čísla (pro ty, kdo se budou zabývat kapipastou – jméno souboru je vlastní. Ve výchozím nastavení Asterisk tento soubor nemá. Zapište svůj nebo použijte standardní ) budeme čekat na zadání čísla, na které je třeba zavolat, které musí obsahovat – Maximálně 4 číslice, čekací doba bude 5 sekund a poskytneme pouze 1 pokus o zadání.

Po zadání čísla na něj zavoláme a spojíme 2 kanály do bridge pomocí funkce Dial.

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

Tímto způsobem voláme na interní číslo ne na náš účet, ale na účet ústředny.

Poznámka: příspěvek mohl vzniknout s pomocí AI a lidskou redakcí. Odpovědný: Dmytro Lomaka, Kaltenkirchen.