Как выполнить план набора по API звездочки AMI? - PullRequest
1 голос
/ 19 сентября 2011

Не удалось найти конкретный ответ для этого.Я новичок в звездочку и AMI.Мне нужно автоматически генерировать звонки, используя звездочку, и передавать параметры в программу AGI.Использование файла вызова, кажется, сначала генерирует вызов, который не нужен.Итак, как я могу использовать asterisk AMI API (PHP) для выполнения плана набора с AGI, передавая ему все параметры?Таким образом, AGI вступит во владение и сделает звонок.

Ответы [ 2 ]

1 голос
/ 28 сентября 2011

Я думаю, что в вашем случае использование файлов вызовов было бы проще. И вот почему:

  1. AMI требует от вас написания сетевого кода, который (если вы новичок) будет намного сложнее при создании простых текстовых файлов (Call Files).
  2. Файлы вызовов позволяют передавать переменные в Asterisk, которые можно использовать в коде плана набора.
  3. Файлы вызовов очень просты .

Ниже приведен полный пример простого способа сделать это с помощью файлов вызовов. Я старался изо всех сил, чтобы объяснить это в соответствующих комментариях.

Во-первых, давайте предположим, что у вас есть некоторый код плана набора, который использует переменные и вызывает сценарий 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()

Ниже приведен файл вызова, который будет:

  1. Необходимо создать во временном каталоге (возможно, /tmp/).
  2. После сохранения вы можете запустить его, переместив его в /var/spool/asterisk/outgoing/ (например: mv /tmp/blah.call /var/spool/asterisk/outgoing/).
  3. Файл вызова сразу же наберет исходящий номер телефона 818-222-3333.
  4. Как только человек по номеру 818-222-3333 отвечает на звонок, Asterisk немедленно начнет выполнение кода вашей телефонной группы [test_stuff], и ему будут доступны переменные, установленные в вашем файле звонков:

    Канал: SIP / trunkname / 18182223333

    Контекст: test_stuff

    Расширение: с

    Приоритет: 1

    Set: somevar = hithere

    Set: some_other_var = woot

Надеюсь, это поможет!

0 голосов
/ 05 сентября 2012

Ваша проблема может быть решена с помощью местного канала, например

В файле вызовов используйте Local/1812222222@test_stuff в качестве каналов при использовании следующей схемы набора

[test_stuff]
exten => _X.,1,NoOp(starting test!)
exten => _X.,n,Set(phone=${EXTEN})
exten => _X.,n,AGI(/path/to/my/billing,${phone},${other_variables_account_etc..})
exten => _X.,n,Dial(SIP/trunkName/${phone})

Вы можете использовать этот метод с обоими интерфейсами AMI или .call файл

...