ВОПРОС

На входящем факсе нет номера отправителя

У нас работает созданное нами приложение по приему факсов в папку. Факсы сохраняются в формате tif с заданным именем. Возможно ли средствами Smartphone Server присвоить факсу ANI (номер отправителя). Например, в самом факсе (tif файле) или в имени файла? Нам требуется знать точный номер отправителя факса. В поле факса указывается номер, но он задается пользователем и не всегда является точным ANI.

ОТВЕТ

Да, можно. В языке сценариев есть глобальная переменная ANI, в нее попадает ANI полученное из потока. Можете использовать его для назначения имени файла.

ВОПРОС

Спасибо большое. А можно запретить с определенного номера прием факсов в папку (задать черный список) ?

ОТВЕТ

Конечно. Создаете таблицу в базе данных, например Microsoft Access, вносите список номеров с которых прием факса запрещен, и в своем сценарии при приходе вызова проверяете по таблице, разрешен прием факса или нет.

ВОПРОС

Функция load_vap

В блоке ветвления 1 цифре должен соотвествовать переход на функцию Load_vap с целью задействования другого vap файла. В инструкции указанно что для этого можно задействовать функцию int load_vap (string alias, string um.vap), но как правильно ее задействовать? Помогите пожалуйста на примерах.

ОТВЕТ

А для каких целей необходимо использовать именно load_vap? В документации сказано: Данная функция предназначена для использования с такими Звуковыми приложениями, которые будут часто выполняться. Однако на их загрузку и установку и/или закрытие их рабочей среды требуется значительное время (такие, как “Unified Messaging.vap”). Теперь такие Звуковые приложения могут быть загружены и инициализированы только однажды и с помощью функции call_vap в случае необходимости могут быть выполнены в любое время без задержки. Но если хотите пример, то так: int myvap = load_vap(«MyVap», «test.vap»); естественно сценарий test.vap должен существовать. Полный текст справки привожу ниже … Функция Load_vap int load_vap(string alias, string vap_file_name); Загружает Звуковое Приложение (ЗП) из указанного на диске файла в память и связывает с ним указанный псевдоним ЗП, которым теперь могут многократно пользоваться другие функции для вызова данного Звукового приложения. Возвращаемое значение (integer) true: ЗП загружено успешно false: Ошибка при загрузке ЗП Параметры alias: (string) символическое имя, с помощью которого загруженное ЗП может быть теперь распознано среди других функций. vap_file_name: (string) допустимый путь и имя файла для ЗП, который будет загружен. Если указанная строка не является полным путем к файлу, то он будет рассматриваться относительно папки с текущим ЗП. Примечания Данная функция предназначена для использования с такими Звуковыми приложениями, которые будут часто выполняться. Однако на их загрузку и установку и/или закрытие их рабочей среды требуется значительное время (такие, как “Unified Messaging.vap”). Теперь такие Звуковые приложения могут быть загружены и инициализированы только однажды и с помощью функции call_vap в случае необходимости могут быть выполнены в любое время без задержки. Вызов этой функции с именем файла ЗП, который еще не был загружен и с именем, которое уже назначено на загруженное ЗП, переадресует имя к вновь загружаемому ЗП и выгрузит то ЗП, которому данное имя было присвоено прежде.

ВОПРОС

Исходящие звонки

В рамках одного VAPa линии работают как входящие и как исходящие. При входящих звонках слушаются сообщения по выбору, а при запросе в базу данных и при наличии нужных параметров нужно чтобы был выполнен исходящий набор, произведен контроль линии (занято, не отвечает, и т.д) и при занятии линии на удаленном конце проиграть нужное сообщение. Не можем найти информацию и примеры настроек для занятия, контроля и выполнения сценария для исходящей связи. Если можно, подскажите где почитать и если можно примеры….. Заранее благодарен!

ОТВЕТ

В рамках одного вапа это не сделать. По своим свойствам вап может быть либо для исходящих вызовов, либо для входящих, это определяется настройками стартового блока. Соответственно необходимо иметь как минимум две линии, одна из которых будет работать на прием и обработку вызова, а вторая будет делать исходящие вызовы. Документация с примерами есть в дистрибутиве.

ВОПРОС

SMS

В рамках поставленной задачи необходимо кроме голосового сервиса сканировать GSM-модем на наличие входящих сообщений. Вобщем все работает, но в определенные моменты (видимо из-за проблем со связью) все зависает. Снял пин-код — проблемы с зависанием софта отпали, но при отправке SMS — ошибка \»E-ERROR\», входящие SMS вообще не читаются… до перезапуска ЗП… через некоторое время опять все не ОК…

ОТВЕТ

К сожалению, без ПИН кода работать не будет.

ВОПРОС

Но работает же! Проблема в том что в какой-то определенный момент по непонятным причинам AT+CMGL=»REC READ» и AT+CMGL=»REC UNREAD» возвращают ERROR, причем на номер в этот момент ничего не поступало. Отправка SMS в это время работает работает без проблем. Кстати если ПИН установлен — виснет SmartPhone. После перезапуска приложения все работает до следующего инцидента (от 2 до 5 часов). Проблема решилась бы если бы была возможность управления модемом AT-командами, либо передернуть модем из приложения. Есть ли какие-либо недокументированные возможности? Вначале грешил на операционку — проверено на 5 станциях с ОС Win2000, Windows Server 2003, Windows XP — результат везде одинаковый. Сканирование портов проводил неделю — инцидент возникает стабильно через несколько часов после запуска приложения.

ОТВЕТ

Если подключаетесь по RDP к серверу, где установлен Смартфон, убедитесь, что сессия не занимает com порт. В таком случае Смартфон действительно можно «подвесить». Если хотите принимать sms сообщения, то применяйте фукцию sms_recv() из примера ниже: string sms, sms_text, sms_from, sms_dt, sms_id; //sms = SMS_send( «+79031234567», «Тестовое сообщение»); //log(sms); //sleep(5); while(!ishangup()) { sms = sms_recv(); if (sms!=»») { log(sms); } sleep(2); } /* sms_recv(string transport=») возвращает sms строку, если нет сообщений. смс сообщение можно разобрать с помощью sms_prop(string sms_message, string prop_name) возвращает значение проперти проперти такие: from, body, dt, id */

ВОПРОС

Не совсем то что хотел узнать. Вообщем случился какой-либо сбой (в канале GSM, питание и т.д.) — модем (в частности мы используем модем на базе siemens mc39i) выполнил аппаратный сброс, так как инициализация заново не была выполнена на попытки чтения входящих смс модем возвращает error, функция sms_recv() возвращет пустую строку даже при наличии входящих смс!!! из скрипта переинициализировать можно через WinExec и sms_serv -stop… но проблема в том что из скрипта невозможно определить результат чтения смс (результат выполнения команды AT+CMGL).

ОТВЕТ

Если сбоит модем, то предсказать как будет работать весь комплекс невозможно. Сценарий который я вам выслал стоит у заказчика больше года на helpdesk и нареканий нет. А как вы определяете что посылает sms_serv?

ВОПРОС

С помощью HHD Serial Monitor. Могу прислать лог мониторинга. После опроса модема на предмет входящих стопаю sms_serv. В принципе проблема решена пусть не самым красивым решением. Еще один маленький вопрос — как сделать приложение которое выполняется непрерывно независимо от «Настройка->Параметры звукового приложения->Максимальная длительность работы приложения» В данный момент Запускается с помощью 24-х стартовых блоков настроенных на время запуска с интервалом 1 час и работает по одному часу.

ОТВЕТ

Если вы применяете «задачный» интерфейс, т.е. в интерфейсе Смартфона выведены не линии а сценарии, то для вашего сценария пометьте галку «Служебное ЗП»

ВОПРОС

Нет! Проблема не в этом! Рассмотрим пример: Добавляем блок вызова сценария. В окне редактирования вводим единственную строку Log($datetime); Обычный выход и выход по ошибке блока соединяем со входом. Добавляем стартовый блок. В настройках указывать»Отвечать на звонок после ХХ гудков» ставить бесмысленно, так как наше приложение — задачное. Остается только «Запускать в установленное время» и ставим время к примеру 8:00. Выход блока соединяем со вхоодом блока сценария. В настройках параметров приложения число экземпляров — 1, отмечаем «Служебное ЗП» и «Авт.запуск». Это простейшее приложение работает без проблем ЕСЛИ СТАРТОВАТЬ С 8:00 до 8:59! Если стартовать в другое время — то завершается сразу же после запуска Вопрос состоит в том что «ЧТО СДЕЛАТЬ ЧТОБЫ ПРИЛОЖЕНИЕ РАБОТАЛО НЕЗАВИСИМО ОТ ВРЕМЕНИ ЗАПУСКА»

ОТВЕТ

Откройте на редактирование стартовый блок, удалите время в поле ввода Время запуска, снимите галку Служебное ЗП в свойствах сценария. Также в правилах активации в полях начало и завершение должны стоять нули (00:00).

ВОПРОС

Служебное зп

Спасибо за замечательный продукт, но к сожалению документация описывает не все, в частности почти ничего нет по служебным ЗП. В частности интересует вопрос: как организовать служебное ПО чтобы оно запускалось автоматически после запуска смартфон-сервера. Если в стартовом блоке указать запускать в определенное время — стартует только в это время, если указать отвечать после звонка — также не то что нужно. Суть такова — запустили смартфон сервер, автоматически стартовало основное ЗП (галку \»Авт. запуск\» установил), и паралельно запустилось служебное ЗП, которое в бесконечном цикле выполняет какие-то действия (например сканировало каталог на предмет наличия определенных файлов). Заранее спасибо

ОТВЕТ

Здравствуйте. Чтобы ЗП (любое, не только служебное) запускалось автоматически после старта Смартфона, надо в его свойствах отметить галочкой «Авт. запуск» и сохранить эту настройку в самом приложении Смартфон кнопокой «Сохранить настройку»

ВОПРОС

Эта галочка стоит, вопрос в другом — как оформить стартовый блок — если установить «запускать в указанное время» — то все работает отлично если стартовать в период с XX:00 до XX:59 (где XX — час запуска), иначе служебное приложение завершается сразу же после запуска

ОТВЕТ

Если вам надо, чтобы ваше ЗП работало бесконечно после запуска, тогда в вашем ЗП должен быть задан бесконечный цикл.

ВОПРОС

Отправка голосовых сообщений по эл. почте в формате *.wav

Здравствуйте! Создаю звуковое приложение, столкнулся с такой проблемой: записаные голосовые сообщения отправляются в формате vox, естесственно прослушать их пользователь не может. Можно ли их конвертировать в ЗП в wav, а потом отправлять и как это сделать?

ОТВЕТ

Здравствуйте. string recfile; // в эту переменную помещаем файл с расширением vox string recfile2; // в этой переменной будет помещаться файл с расширением wav после конвертации recfile2=CreateFileName(«.\»,,».wav»); // создаем уникальное имя файла с расширением wav ConvertWav(recfile2, recfile, 1); // конверируем log(recfile2); // выводим в журнал

ВОПРОС

Переключение на перевод

Здравствуйте! У меня установлен Блок ветвления, который переключает на определенный отдел при выборе 1,2,3. Как сделать, если человек введет 4 цифры он переключался на перевод звонка. Сейчас если человек введет 4 цифры то он по первой цифре переключается на отдел.

ОТВЕТ

Здравствуйте. Можно принимать 4-е цифры и потом анализировать в блоке функций с помощью языка сценариев Smart Basic

ВОПРОС

Отправка голосовых сообщений по эл. почте в формате *.wav

Здравствуйте! Создаю звуковое приложение, столкнулся с такой проблемой: записаные голосовые сообщения отправляются в формате vox, естесственно прослушать их пользователь не может. Можно ли их конвертировать в ЗП в wav, а потом отправлять и как это сделать?

ОТВЕТ

Здравствуйте. string recfile; // в эту переменную помещаем файл с расширением vox string recfile2; // в этой переменной будет помещаться файл с расширением wav после конвертации recfile2=CreateFileName(«.\»,,».wav»); // создаем уникальное имя файла с расширением wav ConvertWav(recfile2, recfile, 1); // конверируем log(recfile2); // выводим в журнал

ВОПРОС

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

ОТВЕТ

Да. Генератор приложений Smartphone предоставляет Вам визуальную среду разработки, делающую процесс создания пользователями своих собственных приложений простым и удобным. Для этой работы Вам не потребуется специальный опыт программирования. А входящий в состав Smartphone Редактор звуковых файлов позволит Вам записывать все реплики, используемые Вашими приложениями для «общения» с абонентами, непосредственно с телефонного аппарата.

ВОПРОС

Я хотел бы, чтобы на разных телефонных линиях работали разные приложения. Возможно ли это?

ОТВЕТ

Возможно. В среде Smartphone речевое приложение для работы на каждой из используемых телефонных линий выбирается и назначается отдельно. Все приложения работают параллельно и совершенно независимо друг от друга.

ВОПРОС

Моим клиентам необходим доступ к информации, содержащейся в базе данных. Возможно ли получить его средствами Smartphone?

ОТВЕТ

Да, возможно. Речевые приложения, работающие в среде Smartphone, могут осуществлять чтение и/или запись информации в базах данных любого формата, для которого в Вашей системе установлен драйвер ODBC (Open DataBase Connectivity). В число поддерживаемых входят такие широко используемые форматы баз данных как MS Access, Oracle, dBase, ASCII и некоторые другие.

ВОПРОС

Смогу ли я создавать речевые приложения, осуществляющие переключение звонков?

ОТВЕТ

Можете. Если Smartphone подключен к телефонной сети через офисную АТС, он может использовать все возможности этой АТС, доступные с любого подключенного к ней телефона. Так, например, в большинстве телефонных систем, применяемых в Европе, для переключения звонка нужно просто послать офисной АТС сигнал, соответствующий нажатию кнопки «R» или «Flash» на телефонном аппарате, и затем набрать внутренний номер телефона, на соединение с которым Вы хотели бы переключить абонента.