User Tools

Site Tools


сервис_asterisk

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
сервис_asterisk [2023/08/18 14:43]
val [Реализация с использованием стандартного языка описания диалплана]
сервис_asterisk [2024/05/28 09:01] (current)
val [Asterisk AGI]
Line 8: Line 8:
 ===== Установка ===== ===== Установка =====
  
 +  * [[https://​community.asterisk.org/​t/​install-asterisk-via-apt-or-from-source/​99713|Install Asterisk via apt or from source?]]
 ==== Debian/​Ubuntu ==== ==== Debian/​Ubuntu ====
 <​code>​ <​code>​
Line 2429: Line 2430:
 exten => s,​n,​ExecIf($["​${DIALSTATUS}"​="​${BUSY}"​]?​Bridge(SIP/​854)) exten => s,​n,​ExecIf($["​${DIALSTATUS}"​="​${BUSY}"​]?​Bridge(SIP/​854))
 exten => s,​n,​Dial(SIP/​854) exten => s,​n,​Dial(SIP/​854)
 +</​code>​
 +
 +Кузьмин Алексей предложил решение,​ если требуется только уведомить звонящего
 +
 +<​code>​
 +exten => _X.,​1,​Dial(PJSIP/​${EXTEN},​60)
 +exten => _X.,​n,​Goto(s-${DIALSTATUS},​1) ; Jump based on status (NOANSWER, BUSY, CHANUNAVAIL,​ CONGESTION, ANSWER)
 +exten => s-BUSY,​1,​Playback(ru/​custom/​busy_ru)
 +exten => s-BUSY,​n,​Hangup()
 +exten => s-NOANSWER,​1,​Playback(ru/​custom/​noanswer_ru)
 +exten => s-NOANSWER,​n,​Hangup()
 +exten => s-CHANUNAVAIL,​1,​Playback(ru/​custom/​invalid_ru)
 +exten => s-CHANUNAVAIL,​n,​Hangup()
 </​code>​ </​code>​
 ===== Организация Call центра ===== ===== Организация Call центра =====
Line 2581: Line 2595:
  
 === Пример на SHELL === === Пример на SHELL ===
 +
 +
  
 <​code>​ <​code>​
Line 2627: Line 2643:
 exten => 313,​n,​Hangup() exten => 313,​n,​Hangup()
 ... ...
 +</​code>​
 +
 +Решение от Кузьмина Алексея,​ скрипты взаимоисключающие,​ один только переводит полное ФИО в фамилию + инициалы,​ второй еще транслитирует
 +
 +<​code>​
 +Место хранения /​var/​lib/​asterisk/​agi-bin
 +
 +Сделать исполняемыми chmod +x
 +
 +exten => _X.,​1,​AGI(shortname.sh,​${CALLERID(name)},​${CALLERID(num)})
 +exten => _X.,​1,​AGI(translite.sh,​${CALLERID(name)},​${CALLERID(num)})
 +
 +shortname.sh
 +
 +#!/bin/bash
 +fio=""​
 +words=($1)
 +num=$2
 +m=${#​words[@]}
 +for ((i=0;​i<​=m-1;​i++));​ do
 +    word=${words[$i]}
 +    if [ $i -gt 0 ]; then
 +        word=${word:​0:​1}.
 +    fi
 +    if [ $i -eq 0 ]; then
 +        fio="​${word} "
 +    else
 +        fio="​${fio}${word}"​
 +    fi
 +done
 +echo "SET CALLERID \"​$fio\"<​$num>"​
 +
 +translite.sh
 +
 +#!/bin/bash
 +fio=""​
 +words=($1)
 +num=$2
 +m=${#​words[@]}
 +for ((i=0;​i<​=m-1;​i++));​ do
 +    word=${words[$i]}
 +    if [ $i -gt 0 ]; then
 +        word=${word:​0:​1}.
 +    fi
 +    str=`echo $word | sed "​y/​абвгдеёзийклмнопрстуфыэ/​abvgdeeziyklmnoprstufye/"​`
 +    str=`echo $str | sed "​y/​АБВГДЕЁЗИЙКЛМНОПРСТУФЫЭ/​ABVGDEEZIYKLMNOPRSTUFYE/"​`
 +    str=${str//​ж/​zh} str=${str//​Ж/​Zh};​
 +    str=${str//​х/​kh} str=${str//​Х/​Kh};​
 +    str=${str//​ц/​ts} str=${str//​Ц/​Ts};​
 +    str=${str//​ч/​ch} str=${str//​Ч/​Ch};​
 +    str=${str//​ш/​sh} str=${str//​Ш/​Sh};​
 +    str=${str//​щ/​sch} str=${str//​Щ/​Sch};​
 +    str=${str//​ъ/​} str=${str//​Ъ/​};​
 +    str=${str//​ь/​} str=${str//​Ь/​};​
 +    str=${str//​ю/​yu} str=${str//​Ю/​Yu};​
 +    str=${str//​я/​ya} str=${str//​Я/​Ya};​
 +    if [ $i -eq 0 ]; then
 +        fio="​${str} "
 +    else
 +        fio="​${fio}${str}"​
 +    fi
 +done
 +echo "SET CALLERID \"​$fio\"<​$num>"​
 </​code>​ </​code>​
  
сервис_asterisk.1692359038.txt.gz · Last modified: 2023/08/18 14:43 by val