Страница 1 из 1

Набор голосом абонентов Астериск

Добавлено: 13 авг 2020, 16:14
ligo
Друзья, всем привет. Хочу настроить голосовой набор внутренних абонентов.
Нашел несколько статей по этому делу и делал все идентично, один в один , пункт за пунктом, в итоге снимаю трубку, набираю 777, слышу "beep", произношу имя, в ответ слышу -ошибочный номер. Ну помогите , пожалуйста!

1. Я зарегался на wit.ai , мне достался ключ API
2. Все, что надо подгрузил в Linux систему . (NodeJS, Voicer и тд)
3. Создал файл сonfig.js в папке /etc/voicer . так же в папке voicer создал папку data где в дальнейшем должен размещаться будет файл peernames.json
4. Файл config.js привел к следующему виду :
module.exports ={
agi: {
port: 3000
},
processing: {
totalAttempts: 2,
playGreeting: true,
playBeepBeforeRecording: false
},
asterisk: {
sounds: {
onErrorBeforeFinish: 'invalid',
onErrorBeforeRepeat: 'invalid',
greeting: 'beep'
},
recognitionDialplanVars: {
status: 'RECOGNITION_RESULT',
target: 'RECOGNITION_TARGET'
}
},
record: {
directory: '/tmp',
type: 'wav',
duration: 2,
},
recognize: {
directory: '/tmp',
type: 'witai', // ['yandex', 'google', 'witai']
options: {
developer_key: '5RMQCLSHGIB5BZW3CRWCONIRNKFZxxxx'
}
},
lookup: {
type: 'file',
options: {
dataFile: '/etc/data/peernames.json'
}
}
};

5. Установил системную переменную VOICER_CONFIGFILE=/etc/voicer/config.js
6.В папке /usr/src/ создал файл parser.sh . Данный файл местит в себе скрипт парсинга такого вида:
#!/bin/bash -x

r="\33[0;31m"
g="\33[0;32m"
y="\33[0;33m"
n="\33[0m"
FILE=/etc/voicer/data/peernames.json

export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

clear
echo -e "${y}Привет! Я скрипт выгрузки информации по внутренним номерам ${n}"

rm -f $FILE && echo -e "${y}Я уже удалил предыдущий файлик и приступил к заполнению нового ${n}"

for i in $(asterisk -rx 'sip show peers' | grep -P 'OK|UNKNOWN' | sed 's/\// /g' | awk '{print $1}'); do

if [[ "${#i}" < 6 && -z "${i//[0-9]/}" ]];then
#echo ${i}

str=$( asterisk -rx "sip show peer $i" | grep "Reg. Contact : sip"; )
#echo $str

name=$( asterisk -rx "sip show peer $i" | grep "Callerid"; )
#echo $name

ext=${str##*'sip:'}
ext=${ext%%'@'*}

name=${name##*': "'}
name=${name%%'" <'*}
name=${name%%' '*}

echo -e "\n {\n \"name\": \"$ext\",\n \"target\": \"SIP/$ext\",\n \"variants\": [\n \"${name}\"\n ]\n }," >> $FILE
echo -e "${g}Номерок $ext уже обработан и добавлен в список. Следующий…${n}"
fi

done

sed -i -e '1 s/^/[/;' $FILE
echo ']' >> $FILE
echo -e "${y}Я закончил! До свидания! =^_^=${n}"

7. Запустил скрипт, гляжу он выполнился, я перешел в файл файл peernames.json чтобы в этом убедиться. Вижу следующее :
[
{
"name": "2020",
"target": "SIP/2020",
"variants": [
"Igor"
]
},

{
"name": "",
"target": "SIP/",
"variants": [
"Иван"
]
},

{
"name": "2030",
"target": "SIP/2030",
"variants": [
"Василий"
]
},
]

8. Установил python36, установил python36-setuptools, выполнил команду easy_install-3.6 supervisor.
9. Создал папку supervisor в каталоге etc. Создал файл supervisord.conf в папке supervisor. Открыл конфигурационный файл и добавил в конец его следующее:
[program:voicer]
command=/usr/bin/voicer -c /etc/voicer/config.js -d /etc/voicer/data/peernames.json
user=root
autostart=true
autorestart=true
10. Создал файл службы supervisord-service в каталоге usr/lib/systemd/system . Привел его в следующий вид :
[Unit]
Description=Supervisor process control system for UNIX
Documentation=http://supervisord.org
After=network.target

[Service]
ExecStart=/usr/local/bin/supervisord -n -c /etc/supervisor/supervisord.conf
ExecStop=/usr/local/bin/supervisorctl shutdown
ExecReload=/usr/local/bin/supervisorctl -c /etc/supervisor/supervisord.conf reload
KillMode=process
Restart=on-failure
RestartSec=50s

[Install]
WantedBy=multi-user.target
11. Выполнил команды:
# systemctl enable supervisord.service
# systemctl start supervisord.service
# ps aux | grep voicer

12.Внес в диалплан такие строки:
exten=777,1,AGI(agi://localhost:3000)
exten=777,n,GotoIf($[${RECOGNITION_RESULT}=SUCCESS]?:default,777,4)
exten=777,n,Dial(${RECOGNITION_TARGET})

13. Звоню и получаю следующее:
== Using SIP VIDEO CoS mark 6
== Using SIP RTP CoS mark 5
-- Executing [777@phone:1] AGI("SIP/2030-00000013", "agi://localhost:3000") in new stack
-- <SIP/2030-00000013> Playing 'beep.slin' (language 'ru')
-- Got SIP INFO response 415 "Unsupported Media Type" back from host '192.168.хх.161:57470'
-- <SIP/2030-00000013> Playing 'invalid.slin' (escape_digits=#) (sample_offset 0) (language 'ru')
-- <SIP/2030-00000013> Playing 'beep.slin' (language 'ru')
-- Got SIP INFO response 415 "Unsupported Media Type" back from host '192.168.хх.161:57470'
-- <SIP/2030-00000013> Playing 'invalid.slin' (escape_digits=#) (sample_offset 0) (language 'ru')
-- <SIP/2030-00000013>AGI Script agi://localhost:3000 completed, returning 0
-- Executing [777@phone:2] GotoIf("SIP/2030-00000013", "0?:default,777,4") in new stack
-- Goto (default,777,4)
-- Channel 'SIP/2030-00000013' sent to invalid extension: context,exten,priority=default,777,4
-- Executing [i@default:1] playback("SIP/2030-00000013", "invalid")
-- <SIP/2030-00000013> Playing 'invalid.slin' (language 'ru')
-- Executing [i@default:1] background("SIP/2030-00000013", "demo-instruct")

.

Друзья, честно, я не знаю, что делаю не так. Люди добрые , помогите пожалуйста!! Спасибо

Re: Набор голосом абонентов Астериск

Добавлено: 13 авг 2020, 16:48
ded
ваш диалплан -

Код: Выделить всё

exten=777,1,AGI(agi://localhost:3000)
exten=777,n,GotoIf($[${RECOGNITION_RESULT}=SUCCESS]?:default,777,4)
exten=777,n,Dial(${RECOGNITION_TARGET})
говорит о том, что на втором шаге (при успешном распознавании), будет выполнен переход на 4-й шаг экстена 777 в контексте default, но такого шага не существует, поэтому обзвает вас инвалидом:
sent to invalid extension: context,exten,priority=default,777,4

-- Executing [777@phone:1] AGI("SIP/2030-00000013", "agi://localhost:3000") in new stack
-- <SIP/2030-00000013> Playing 'beep.slin' (language 'ru')
-- Got SIP INFO response 415 "Unsupported Media Type" back from host '192.168.хх.161:57470'
-- <SIP/2030-00000013> Playing 'invalid.slin' (escape_digits=#) (sample_offset 0) (language 'ru')
-- <SIP/2030-00000013> Playing 'beep.slin' (language 'ru')
-- Got SIP INFO response 415 "Unsupported Media Type" back from host '192.168.хх.161:57470'
-- <SIP/2030-00000013> Playing 'invalid.slin' (escape_digits=#) (sample_offset 0) (language 'ru')
-- <SIP/2030-00000013>AGI Script agi://localhost:3000 completed, returning 0
-- Executing [777@phone:2] GotoIf("SIP/2030-00000013", "0?:default,777,4") in new stack
-- Goto (default,777,4)
-- Channel 'SIP/2030-00000013' sent to invalid extension: context,exten,priority=default,777,4
-- Executing [i@default:1] playback("SIP/2030-00000013", "invalid")

Re: Набор голосом абонентов Астериск

Добавлено: 14 авг 2020, 07:40
ligo
Спасибо за отклик, дед! Сейчас подшаманю диалплан, и попробую снова. Извини за глупые вопросы, я младенец еще в Астериск, но зато есть желание повзрослеть)

Re: Набор голосом абонентов Астериск

Добавлено: 14 авг 2020, 07:58
ligo
exten => 777,1,AGI(agi://localhost:3000)
same => n,GotoIf($[${RECOGNITION_RESULT}=SUCCESS]?da:net)
same => n(da),Dial(${RECOGNITION_TARGET})
same => n(net),Hangup()

не так ? Я просто не совсем понимаю куда я должен сослаться после проверки речи моей.

Re: Набор голосом абонентов Астериск

Добавлено: 14 авг 2020, 09:57
ded
ligo писал(а): Извини за глупые вопросы,
лучше всё таки на вы, так приличней.
ligo писал(а):Я просто не совсем понимаю куда я должен сослаться после проверки речи моей.
Я тоже :(
Всё таки это точно не вопросы новичков. Я же рекомендовал -
https://forum.asterisk.ru/viewtopic.php ... 10&p=91800
Может спросить Muller7777? Он где-то рядом с вами, может в соседнем кабинете сидит.

Для отладки лучше напихивать всегда проверку содержимого каждой переменной

Код: Выделить всё

exten => 777,1,AGI(agi://localhost:3000)
same => n,NoOp(:::::::::${RECOGNITION_RESULT:::::::)
same => n,GotoIf($[${RECOGNITION_RESULT}=SUCCESS]?da:net)
same => n,NoOp(:::::::::${RECOGNITION_TARGET:::::::)
same => n(da),Dial(${RECOGNITION_TARGET})
same => n(net),Hangup()
и включить дебаг
*CLI> agi set debug on

Re: Набор голосом абонентов Астериск

Добавлено: 14 авг 2020, 13:16
BorisTheBlade
-- Got SIP INFO response 415 "Unsupported Media Type" back from host '192.168.хх.161:57470'
Предположу что косяк с кодеками и голос до астериска не доходит.

Re: Набор голосом абонентов Астериск

Добавлено: 14 авг 2020, 13:17
ligo
Вот дед, Вы следопыт) Muller7777 сидит в соседнем кабинете, но он с давних пор не увлекается этим.
Спасибо. потихоньку разберусь