This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
голосовые_сервисы_помогут_голосовой_почте [2019/12/05 13:01] val [Запись вебинара] |
голосовые_сервисы_помогут_голосовой_почте [2021/06/04 12:49] val [Шаг 6. Добавляем голосовую почту в диалплан] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Голосовые сервисы спешат на помощь голосовой почте! ====== | ====== Голосовые сервисы спешат на помощь голосовой почте! ====== | ||
+ | |||
+ | ===== Анонс вебинара ===== | ||
+ | |||
+ | * [[https://www.specialist.ru/news/5066/integraciya-golosovih-servisov-yandeks-s-iptelefoniej|Учебный центр «Специалист» приглашает на бесплатный семинар «Интеграция голосовых сервисов Яндекс с IP-телефонией». Он пройдет 3 декабря в 17:30]] | ||
===== Запись вебинара ===== | ===== Запись вебинара ===== | ||
* [[https://youtu.be/dxZirqb8GS8|Интеграция голосовых сервисов Яндекс с IP-телефонией Asterisk]] | * [[https://youtu.be/dxZirqb8GS8|Интеграция голосовых сервисов Яндекс с IP-телефонией Asterisk]] | ||
- | * [[https://www.specialist.ru/news/5066/integraciya-golosovih-servisov-yandeks-s-iptelefoniej|Учебный центр «Специалист» приглашает на бесплатный семинар «Интеграция голосовых сервисов Яндекс с IP-телефонией». Он пройдет 3 декабря в 17:30]] | + | |
===== Реклама вебинара ===== | ===== Реклама вебинара ===== | ||
Вопрос в классе на курсе телефонии: кто пользуется голосовой почтой? - В ответ - ироничные усмешки... Следующий вопрос - а почему Вы не пользуетесь голосовой почтой? - В ответ - откровенный смех) | Вопрос в классе на курсе телефонии: кто пользуется голосовой почтой? - В ответ - ироничные усмешки... Следующий вопрос - а почему Вы не пользуетесь голосовой почтой? - В ответ - откровенный смех) | ||
Line 91: | Line 95: | ||
* [[Сервис Asterisk#Настройка базового плана нумерации]], номерной план _4XX | * [[Сервис Asterisk#Настройка базового плана нумерации]], номерной план _4XX | ||
- | * Используя номера 302 и 303 из темы [[Сервис Asterisk#Интерактивное голосовое меню IVR]] записываем и прослушиваем сообщение | + | * Используя тему "[[Сервис Asterisk#Запись звукового файла]]" записываем и прослушиваем сообщение |
===== Шаг 4. Разворачиваем Yandex SpeechKit ====== | ===== Шаг 4. Разворачиваем Yandex SpeechKit ====== | ||
Line 99: | Line 103: | ||
* Используя [[Пакет 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 142: | Line 123: | ||
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 157: | Line 143: | ||
-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 176: | Line 156: | ||
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] | ||
Line 190: | Line 176: | ||
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> |