Asterisk позволяет создавать телеконференции с неограниченным количеством участников. В стандартной конференции участник должен набрать номер конференции для присоединения. А если надо собрать конференцию из предустановленных участников нажатием одной клавиши или набором кода? Для этого можно использовать возможности Call File.
Синтаксис Call файла
Для совершения вызова
-
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.
Контекст from-invite задает номер для сбора конференции.
/etc/asterisk/extensions.conf
[from-invite] exten => _111,1,Answer() exten => _111,n,System(/var/spool/asterisk/call_list.sh)
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