Я думаю, что в вашем случае использование файлов вызовов было бы проще. И вот почему:
- AMI требует от вас написания сетевого кода, который (если вы новичок) будет намного сложнее при создании простых текстовых файлов (Call Files).
- Файлы вызовов позволяют передавать переменные в Asterisk, которые можно использовать в коде плана набора.
- Файлы вызовов очень просты .
Ниже приведен полный пример простого способа сделать это с помощью файлов вызовов. Я старался изо всех сил, чтобы объяснить это в соответствующих комментариях.
Во-первых, давайте предположим, что у вас есть некоторый код плана набора, который использует переменные и вызывает сценарий AGI (что, как я полагаю, вы делаете на основе вашего вопроса). Это означает, что в вашем файле extensions.conf
будет код, похожий на:
[test_stuff]
exten => s,1,NoOp(starting test!)
exten => s,n,NoOp(my variable's value is: ${somevar})
exten => s,n,NoOp(my other variable's value is: ${some_other_var})
exten => s,n,AGI(/path/to/my/script.sh,${somevar})
exten => s,n,NoOp(i just ran an AGI script and passed it a command line argument!)
exten => s,n,Hangup()
Ниже приведен файл вызова, который будет:
- Необходимо создать во временном каталоге (возможно,
/tmp/
).
- После сохранения вы можете запустить его, переместив его в
/var/spool/asterisk/outgoing/
(например: mv /tmp/blah.call /var/spool/asterisk/outgoing/
).
- Файл вызова сразу же наберет исходящий номер телефона 818-222-3333.
Как только человек по номеру 818-222-3333 отвечает на звонок, Asterisk немедленно начнет выполнение кода вашей телефонной группы [test_stuff], и ему будут доступны переменные, установленные в вашем файле звонков:
Канал: SIP / trunkname / 18182223333
Контекст: test_stuff
Расширение: с
Приоритет: 1
Set: somevar = hithere
Set: some_other_var = woot
Надеюсь, это поможет!