Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

text to speech из списка

0

Ситуация в следующем, использую Google text to speech и speech to text Позвонив на АТС и к примеру назвал имя, можно соединиться с этим человеком.

exten => _123,1,Answer()
exten => _123,2,agi(speech-recog.agi,ru-RU)
exten => _123,3,Verbose(1,${utterance})
exten => _123,4,GotoIf($["${utterance}" = "максим"]?5:7)
exten => _123,5,Dial(SIP/corp/maxim)
exten => _123,6,Hangup()
exten => _123,7,GotoIf($["${utterance}" = "денис"]?8:9)
exten => _123,8,Dial(SIP/corp/denis)
exten => _123,9,Hangup()

Собственно вопрос в том как упростит схему (поскольку имён много), опять же хотелось вариант с тем чтобы можно было назвать отдел и программа начала читать имена с этого отдела, из которых пользователем голосом уже может выбрать.

удалить закрыть спам изменить тег редактировать

спросил 2013-02-18 11:23:53 +0400

mention Gravatar mention flag of Russian Federation
486 43 3 17
http://localhost/

обновил 2013-02-21 14:59:35 +0400

Comments

Смотря на логику диаплана и на вызов скрипта agi , в голову приходит мысль , что agi скрипт написан не Вами. Думаю , что лишние советы по программированию , Вам пока только во вред.

zzuz ( 2013-02-18 11:54:21 +0400 )редактировать

Есть идея сохранить в базе данных MySQL в таблицу такого вида: Имя, Отдел, Команда на выполнение Но каким образом это всё прикрутить опять же.

Да, скрипт был взят готовый с github

mention ( 2013-02-18 12:41:27 +0400 )редактировать

Я о том и говорю. У Вас не хватает знаний даже наделать ошибок . Ваш вопрос будет тут интрепретироваться , как "Хочу готовое , но делать ничего не буду". Идея с БД правильная , но реализовать без опыта и знаний , полученных в книгах , у Вас , к сожаленью не получится. Начните с более простого.

zzuz ( 2013-02-18 12:55:48 +0400 )редактировать

Возможно вариант с массивом каким-либо, готов изучать ману, дайте направление... пример простейшего сценария или приложение в астериске про которое почитать, мои знания ещё скудны (чуть-чуть php, чуть-чуть астериска и т.д.), но инетересен опыт, думаю присутствующие тут люди его имеют.

mention ( 2013-02-18 21:50:24 +0400 )редактировать
1

ув. тов. zzuz таки сгустил красок, ибо постичь надо вполне постигаемое.. если топикстартер готов гуглить, писать, еще гуглить и т.д., то требуемое напишет точно.

А начать с простого - первый же взгляд на представленный кусок диалплана.. следующий шаг очевиден же: дабы не трогать рабочий agi, но реализовать выбор маршрута и не усложнить диалплан, выносим в отдельный скрипт, в который и будем передавать переменную ${utterance}, в диалплане останется только Dial(SIP/corp/${uzername}) (пока только, обработка ошибок - после)

Этот отдельный скрипт сперва может парсить просто текстовый файл, тогда на баше это 1 - 3 строчки кода.. Впринципе, парсить файл можно и из диалплана, но если в будущем (завтра?) станет надо не только парсить, но и обращаться в базу данных и прочие ресурсы, то исправить придётся сам скрипт. диалплан останется неизменным и читаемым.

А выбор отдела, имхо, "традиционнее" оставить/ сделать в IVR - так и звонящему понятнее, и поддерживать будет проще.. но тут я дошел до лимита длины комментария

viktorkho ( 2013-02-21 14:11:39 +0400 )редактировать

и да, переименуйте, пожалуйста, тему топика как-нибудь... я то я сюда с таким диким лбопытством заглянул

viktorkho ( 2013-02-21 14:17:17 +0400 )редактировать

Воот грамотный ответ,, спасибо, попробую модифицировать готовый скрипт, чтоб в итоге так и отдавал...

mention ( 2013-02-21 14:19:07 +0400 )редактировать

Уважаемый товарищ zzuz не сгущает краски , а описывает очевидные вещи. Автор не просит помощи , а выпрашивает сделать за него, как и многие другие. Никто здесь не видит ни строчки попыток что-то сделать. Что можно исправить в несуществующем скрипте или программе?

zzuz ( 2013-02-21 15:12:28 +0400 )редактировать

на самом деле мне нужно было что-то типа case of... но я не нашёл ничего подобного и по-этому написал сюда, ведь по-сути этот проект и создан для того чтобы люди делились опытом и помогали друг-другу, а иначе смысла в нём не было бы!

mention ( 2013-02-21 15:24:07 +0400 )редактировать

Ну так. Делитесь опытом , кто же Вам мешает? Напишите скрипт , а мы оценим и с огромным удовольствием поучаствуем в его модернизации.

zzuz ( 2013-02-21 15:31:23 +0400 )редактировать
1

Вообще , если отступить от этой дисскусии то Ваша задача решалась только с моей стороны несколько раз. Одно из решений есть на этом форуме. Другие участники также выкладывали решения. И получается , что "делиться опытом" - это для Вас постоянные повторения своих сообщений людьми , кто уже поделился опытом, так?

zzuz ( 2013-02-21 15:34:45 +0400 )редактировать

вам бы квесты сочинять, может подсказку дадите как искать или ссылочку?

mention ( 2013-02-21 18:14:18 +0400 )редактировать

Вы капитан очевидность

mention ( 2013-02-21 22:03:14 +0400 )редактировать

1 Ответ

1

в аги скрипте вы ставите переменную dialnumber= в которую записываете транслитерацию вашего ответа. как делается транслитерация? гуглится.

дальше вы просто пишите вот так

exten => _123,1,Answer()
exten => _123,2,agi(speech-recog.agi,ru-RU)
exten => _123,3,Verbose(1,"${utterance} ${dialnumber})
exten => _123,4,Goto(choose_dest,${dialnumber},1)
[choose_dest]
exten => maxim,1,Dial(SIP/corp/maxim)
exten => maksim,1,Dial(SIP/corp/maxim);на случае неправильного определения все варианты тутже
exten => nosonv,1,Dial(SIP/corp/maxim); на случай фамилии.
exten => inzhener,1,Dial(SIP/corp/maxim&SIP/corp/inna); на случай должности.

exten => denis,1,Dial(SIP/corp/denis)
exten => ivanov,1,Dial(SIP/corp/denis)
exten => tekhnik,1,Dial(SIP/corp/denis)

достаточно понятно?

будет ли работать без транслитерации - я не в курсе. можно попробывать.

ссылка удалить спам редактировать

ответил 2013-02-21 21:34:33 +0400

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

обновил 2013-02-21 21:46:30 +0400

Comments

c транслитерацией всё понятно, чуть не подходит решение, но навело на определенные мысли. Спасибо. Все-таки с группой вопрос, есть идеи? Задумка в том чтобы пользователь к примеру назвал название отдела и она продиктовала всех сотрудников в этом отделе. Понимаю примерно как можно сделать через базу данных , таблицу со столбцами имя,группа,номер. Тоже решение, сохранять в переменную и проверять сначала по столбцу группы и если есть совпадения сохранять в переменную все имена с этой группой,а затем уже диктовать их. Хотелось бы размышления как это сделать без agi и бд с минимальным количеством строк.

mention ( 2013-02-21 22:02:14 +0400 )редактировать

В вашем случае лень - двигатель регресса. Изучите нормальные языки программирования, на астерисковом диалплане не по-нормальному то, что вы хотите.

switch ( 2013-02-21 22:13:22 +0400 )редактировать

Меня интересуют варианты, интересно насколько можно извратнуться

mention ( 2013-02-21 22:37:36 +0400 )редактировать

Можете не беспокоиться на этот счет: Вы уже это делаете...

switch ( 2013-02-21 22:43:08 +0400 )редактировать

не подходит так не подходит.если вы УЖЕ делаете agi,так почитайте КАК его использовать и прямо оттуда звоните. оттуда и диктуйте пользователей. ваш вопрос ответа не имеет кроме "идите учите программирование".

meral ( 2013-02-22 00:09:14 +0400 )редактировать

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку
1 закладка

подписаться на rss ленту новостей

Статистика

Задан: 2013-02-18 11:23:53 +0400

Просмотрен: 1,080 раз

Обновлен: Feb 21 '13

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.