This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
голосовые_сервисы_помогут_голосовой_почте [2020/12/11 18:40] val [Шаг 6. Добавляем голосовую почту в диалплан] |
голосовые_сервисы_помогут_голосовой_почте [2022/06/16 12:48] (current) val [Система] |
||
|---|---|---|---|
| Line 30: | Line 30: | ||
| ==== Система ==== | ==== Система ==== | ||
| - | * Linux [[http://val.bmstu.ru/unix/img/My%20Documents/debian_10.0_64_01.ova|Debian 10]] в домашней сети | + | * Linux [[https://val.bmstu.ru/unix/img/My%20Documents/debian_10.11_64_01.ova|Debian 10]] в домашней сети |
| ==== Настройка сети ==== | ==== Настройка сети ==== | ||
| Line 102: | Line 102: | ||
| * [[https://console.cloud.yandex.ru/billing]] | * [[https://console.cloud.yandex.ru/billing]] | ||
| + | * Установка ПО для [[Перекодировка звука#Перекодировка в ogg формат]] | ||
| * Используя [[Пакет sudo]] переключаемся на пользователя аsterisk | * Используя [[Пакет sudo]] переключаемся на пользователя аsterisk | ||
| - | * Инициализируем [[Yandex SpeechKit]] | + | * [[Перекодировка звука#Перекодировка в ogg формат]] записанного голосового сообщения |
| - | * Тестируем распознавание подготовив звуковой файл ([[Перекодировка звука#Перекодировка alaw в ogg формат]]) | + | * Инициализируем и тестируем распознавание [[Yandex SpeechKit]] |
| ===== Шаг 5. Развертываем систему рассылки email ====== | ===== Шаг 5. Развертываем систему рассылки email ====== | ||
| - | * [[Организация рассылки электронной почты#Утилита msmtp]] | + | * [[UA mutt]] |
| - | + | ||
| - | <code> | + | |
| - | # cat /etc/msmtprc | + | |
| - | </code><code> | + | |
| - | defaults | + | |
| - | port 25 | + | |
| - | tls off | + | |
| - | + | ||
| - | account default | + | |
| - | host localhost | + | |
| - | domain localhost | + | |
| - | auth off | + | |
| - | </code><code> | + | |
| - | asterisk@server:~$ cat mail.txt | + | |
| - | </code><code> | + | |
| - | Content-Type: text/plain; charset=UTF-8 | + | |
| - | To: user1@corp13.un | + | |
| - | From: Вячеслав Лохтуров<user2@corp13.un> | + | |
| - | Subject: Запись | + | |
| - | cделана | + | |
| - | </code><code> | + | |
| - | asterisk@server:~$ cat mail.txt | msmtp -f user2@corp13.un user1@corp13.un | + | |
| - | </code> | + | |
| ===== Шаг 6. Добавляем голосовую почту в диалплан ====== | ===== Шаг 6. Добавляем голосовую почту в диалплан ====== | ||
| Line 146: | Line 124: | ||
| RECFILENAME=${DIR}$1 | RECFILENAME=${DIR}$1 | ||
| MAILTO=$2 | MAILTO=$2 | ||
| - | MAILFROM=$3 | + | MAILFROM=${3%.empty} |
| NUMFROM=$4 | NUMFROM=$4 | ||
| - | NAMEFROM=$5 | + | NAMEFROM=${5%.empty} |
| + | |||
| + | if [ -z "$MAILFROM" ] | ||
| + | then | ||
| + | MAILFROM=asterisk@server.corpX.un | ||
| + | fi | ||
| logger -t asterisk -p local0.info $@ | logger -t asterisk -p local0.info $@ | ||
| #exit 0 | #exit 0 | ||
| - | FOLDER_ID=b1gmpublpjhm23dm8nfk | + | FOLDER_ID=b1gg4j6ru4esprat3uu7 |
| IAM_TOKEN=`/var/lib/asterisk/yandex-cloud/bin/yc iam create-token` | IAM_TOKEN=`/var/lib/asterisk/yandex-cloud/bin/yc iam create-token` | ||
| Line 161: | Line 144: | ||
| -i ${RECFILENAME}.wav \ | -i ${RECFILENAME}.wav \ | ||
| -acodec libvorbis ${RECFILENAME}.ogg | -acodec libvorbis ${RECFILENAME}.ogg | ||
| - | |||
| - | /bin/cat > ${RECFILENAME}.txt <<EOF | ||
| - | Content-Type: text/plain; charset=UTF-8 | ||
| - | To: $MAILTO | ||
| - | From: $NAMEFROM <$MAILFROM> | ||
| - | Subject: Голосовое сообщение с номера ${NUMFROM} | ||
| - | EOF | ||
| /usr/bin/curl -s -X POST -H "Authorization: Bearer ${IAM_TOKEN}" \ | /usr/bin/curl -s -X POST -H "Authorization: Bearer ${IAM_TOKEN}" \ | ||
| --data-binary "@${RECFILENAME}.ogg" \ | --data-binary "@${RECFILENAME}.ogg" \ | ||
| "https://stt.api.cloud.yandex.net/speech/v1/stt:recognize?folderId=${FOLDER_ID}" \ | "https://stt.api.cloud.yandex.net/speech/v1/stt:recognize?folderId=${FOLDER_ID}" \ | ||
| - | | jq '.result' | tr -d '"' >> ${RECFILENAME}.txt | + | | jq '.result' | tr -d '"' > ${RECFILENAME}.txt |
| - | /bin/cat ${RECFILENAME}.txt | msmtp -f ${MAILFROM} ${MAILTO} | + | export EMAIL="${NAMEFROM}<${MAILFROM}>" |
| + | cat ${RECFILENAME}.txt | mutt -s "Голосовое сообщение от абонента ${NUMFROM}" -a ${RECFILENAME}.ogg -- ${MAILTO} | ||
| /bin/rm ${RECFILENAME}.* | /bin/rm ${RECFILENAME}.* | ||
| Line 180: | Line 157: | ||
| exit 0 | exit 0 | ||
| </code><code> | </code><code> | ||
| + | # chmod +x /usr/local/bin/mailsend.sh | ||
| + | |||
| # cat /etc/asterisk/extensions.conf | # cat /etc/asterisk/extensions.conf | ||
| </code><code> | </code><code> | ||
| [default] | [default] | ||
| ... | ... | ||
| - | exten => _4XX,1,Dial(PJSIP/${EXTEN},10) | + | ;exten => _4XX,1,Dial(PJSIP/${EXTEN},10) |
| - | exten => _4XX,n,Set(MY-CALLED-USER-ID=${PJSIP_ENDPOINT(${EXTEN},MY-USER-ID)}) | + | exten => _4XX,1,Dial(SIP/${EXTEN},10) |
| + | ;exten => _4XX,n,Set(MY-CALLED-USER-ID=${PJSIP_ENDPOINT(${EXTEN},MY-USER-ID)}) | ||
| + | exten => _4XX,n,Set(MY-CALLED-USER-ID=${SIPPEER(${EXTEN},chanvar[MY-USER-ID])}) | ||
| exten => _4XX,n,Goto(mailrec,s,1) | exten => _4XX,n,Goto(mailrec,s,1) | ||
| + | |||
| + | ... | ||
| [mailrec] | [mailrec] | ||
| exten => s,1,Playback(vm-intro) | exten => s,1,Playback(vm-intro) | ||
| - | exten => s,n,Record(recordings/${UNIQUEID}.alaw,,,xk) | + | exten => s,n,Record(recordings/${UNIQUEID}.alaw,,29,xk) |
| exten => s,n,Hangup() | exten => s,n,Hangup() | ||
| - | exten => h,1,System(/usr/local/bin/mailsend.sh ${UNIQUEID} ${MY-CALLED-USER-ID} "${MY-USER-ID}" ${CALLERID(num)} "${CALLERID(name)}" &) | + | exten => h,1,System(/usr/local/bin/mailsend.sh ${UNIQUEID} ${MY-CALLED-USER-ID} ${MY-USER-ID}.empty ${CALLERID(num)} "${CALLERID(name)}.empty" &) |
| + | |||
| </code> | </code> | ||