Asterisk Конференц-мост

Asterisk позволяет создавать телеконференции с неограниченным количеством участников. В стандартной конференции участник должен набрать номер конференции для присоединения. А если надо собрать конференцию из предустановленных участников нажатием одной клавиши или набором кода?

Для этого можно использовать возможности Call File.

Для совершения вызова
  • Channel: <channel>: Канал используемый для вызова.
  • CallerID: «name» <number> Caller ID, Примечание: Это не работает если формат не соответсвует шаблону: CallerID: «Some Name» <1234>
  • MaxRetries: <number> Число попыток (исключая первую попытку, т.е. если поставить 0 = всего будет совершена одна попытка). Default is 0.
  • RetryTime: <number> Время в секундах между попытками. Default is 300 (5 min).
  • WaitTime: <number> Время посылки вызова. Default is 45.
  • Account: Set the account code to use.
Когда соединение установлено:
  • Context: [Контекст] в extensions.conf
  • Extension: Екстеншен в [контексте] extensions.conf
  • Priority: приоритет в контексте
  • Set: Set a variable for use in the extension logic (example: file1=/tmp/to ); in Asterisk 1.0.x use 'SetVar' instead of 'Set'
  • Application: Asterisk Application to run (используется вместо контекста, екктншена и приоритета)
  • Data: The options to be passed to application
  • Set: Can now also write to dialplan functions like CDR()
  • AlwaysDelete: Yes/No - If the file's modification time is in the future, the call file will not be deleted
  • Archive: Yes/No - Move to subdir «outgoing_done» with «Status: value», where value can be Completed, Expired or Failed.

Контекст [conference] направляет ответивших абонентов в конференц комнату.
/etc/asterisk/extensions.conf/

 
 [conference]
  exten => s,1,Answer()
  exten => s,n,ConfBridge(111)

Контекст invite задает номер для сбора конференции.
/etc/asterisk/extensions.conf

  [invite]
  exten => _111,1,Answer()
  exten => _111,n,System(/var/spool/asterisk/call_list.sh)
  exten => _111,n,ConfBridge(111)

Создадим конференцию в файле meetme.conf

[rooms]
conf => 111,
Shell Скрипт /var/spool/asterisk/call_list.sh/

Cкрипт вызывает номера перечисленные в файле /var/spool/asterisk/list.txt.
Количество номеров разрешенных для одновременного набора указывается в переменной «$count_f» -eq «15»

#!/bin/sh

while read number; do

cat <<EOF  >  /var/spool/asterisk/$number

Channel: Local/$number
Callerid: $number
MaxRetries: 1
RetryTime: 20
WaitTime: 30
Context: conference
Extension: s
Priority: 1
Archive: yes
Set: CDR(userfield)=${REASON}
Account: confrence_1
EOF

    chown asterisk:asterisk /var/spool/asterisk/$number
    mv /var/spool/asterisk/$number  /var/spool/asterisk/outgoing

    echo "$number"

    number=`expr $number + 1`

    while [ "$?" -eq "0" ]

    do
count_files ()

{

    count_f=`ls /var/spool/asterisk/outgoing | wc -l`

        if [ "$count_f" -eq "15" ]; then

            sleep 10

            return 0

        else

            return 1

        fi

}


    count_files

    done


done < /var/spool/asterisk/list.txt

exit 0

Участники конференции

/var/spool/asterisk/list.txt

100
101
102
103
104

How To

  • artikle/conf_most.txt
  • Последние изменения: 2018/03/12