AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Возможно ли такое реализовать?

Newbies/FAQ Forum 25 сообщений -
#1

Предположим человек звонит с городского номера (404-404) на АТС. Допустим на номер 505-505 и при вызове у оператора на экран компьютера должно быть выведено определенное сообщение, если же позвонили с другого (допустим 303-303) номера - выводится другое сообщение. Как вариант - открытый вэб-браузер и всплывающее сообщение или есть другой способ? Ткните в нужное русло.
#2

Например Firefox Click2Dial
_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
#3

На монитор телефона чтоли?Подставте текст в CID
exten=>505505/404404,1,Set(CALLERID(name)=SOOBSHENIE${CALLERID(name)})
exten=>505505/404404,2,Dial(SIP/101)
exten=>505505/303303,1,Set(CALLERID(name)=SOOBSHENIE 2${CALLERID(name)})
exten=>505505/303303,2,Dial(SIP/101)
#4

Нет, не на панель телефона, а именно на монитор компьютера. Т.е. сидит оператор, телефон звонит и в это же самое время на экран выводится окно с каким-то текстом, текст заранее вносится в программу. Суть такова - в зависимости от номера звонящего разный текст.

Added after 17 minutes:

Firefox Click2Dial, не плохая вроде штучка, но как сделать так, что бы в зависимости от номер были разные сообщения пока не понятно.
#5

это функционал crm системы
#6

Jabber!
#7

Пример запроса для php-страницы вытягивающей инфу из SugarCRM:

Код:

$sql="Select * from accounts where phone_fax='$phone' or phone_office='$phone' or phone_alternate='$phone'";


В настройке Click2Dial установить на клиенте режим всплытия окна типа http://192.168.0.180/crm/aster.php?who=499&num=#NUM#
где 499 - мой внутренний номер.

_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
#8

Jabber. Наступил на грабли при установке. Астер 11 на Дебиан 6
В меню выбора модулей для астера XXX chan_jingle. Внизу Depends on: iksemel(E), res_jabber(M)
Ставлю iksemel 1.4 по: http://habrahabr.ru/company/tisystems/blog/137357/
При ./configure --prefix=/usr --with-libgnutls-prefix=/usr --with-gnutls
Видим
Код:
checking for libgnutls - version >= 0.1.0... ./configure: line 21324: /usr/bin/libgnutls-config: No such file or directory
./configure: line 21325: /usr/bin/libgnutls-config: No such file or directory
./configure: line 21326: /usr/bin/libgnutls-config: No such file or directory
no
*** Could not run libgnutls test program, checking why...
*** The test program failed to compile or link. See the file config.log for the
*** exact error that occured. This usually means LIBGNUTLS was incorrectly installed
*** or that you have moved LIBGNUTLS since it was installed. In the latter case, you
*** may want to edit the libgnutls-config script: /usr/bin/libgnutls-config
configure: creating ./config.status
config.status: creating Makefile
config.status: creating iksemel.pc
config.status: creating src/Makefile
config.status: creating include/Makefile
config.status: creating tools/Makefile
config.status: creating test/Makefile
config.status: creating doc/Makefile
config.status: creating include/config.h
config.status: include/config.h is unchanged
config.status: executing depfiles commands
configure: WARNING: Unrecognized options: --with-gnutls

Как я понял нет libgnutls, ставлю из репозитария, но там libgnutls26 и вот тут загвоздка. Скачал с ftp://ftp.gnutls.org/gcrypt/gnutls/ версию 2.8, установил, предварительно установив libgcrypt 1.5.
При установке все вроде поставилось без ошибок.
А вот при попытке ./configure --prefix=/usr --with-libgnutls-prefix=/usr --with-gnutls то же самое сообщение:
Код:
checking for libgnutls-config... no
checking for libgnutls - version >= 0.1.0... no
*** The libgnutls-config script installed by LIBGNUTLS could not be found
*** If LIBGNUTLS was installed in PREFIX, make sure PREFIX/bin is in
*** your path, or set the LIBGNUTLS_CONFIG environment variable to the
*** full path to libgnutls-config.
configure: creating ./config.status


Где косяк?
#9

chan_jingle вам не нужен. Вам нужен только res_jabber/res_xmpp.
А как вы поставили gnutls? С какими опциями собирали?
#10

Цитата:
chan_jingle вам не нужен. Вам нужен только res_jabber/res_xmpp.
А как вы поставили gnutls? С какими опциями собирали?


./configure
make
make install

А res_jabber тогда как прикручивать?
#11

./configure без параметров?!
тогда он у вас в /usr/local встал. следловательно iksemel собирать с --withgnutls=/usr/local
#12

Сборка не проходит, вот сообщение:
Код:
configure: WARNING: Unrecognized options: --with-gnutls

Может я gnutls не так ставлю?
#13

Во-первых, это только предположение, вы бы сначала проверили куда у вас действительно встал gnutls
Во-вторых, я конечно же опечатался, правильно писать --with-libgnutls-prefix=/usr/local

Да и не прощели поставить iksemel из системных реп? Зачем мучаться со сборкой всех зависимостей самостоятельно?


Последний раз редактировалось: xelas (Пн Авг 19, 2013 07:31)
#14

Вот сообщение к конце ./configure при установке gnutls
Код:
configure: summary of build options:
version: 2.8.6 shared 40:12:14
Host type: x86_64-unknown-linux-gnu
Install prefix: /usr/local
Compiler: gcc -std=gnu99
Warning flags: errors: warnings:
Library types: Shared=yes, Static=yes
Valgrind: no
Guile wrappers: no
C++ library: yes
OpenSSL library: yes
#15

Так что, --with-libgnutls-prefix=/usr/local не помогает?
#16

Вот эта строка меня смущает:
checking for libgnutls-config... no
Если устанавливать libgnutls, то там в пакетах нет libgnutls-config

Added after 2 minutes:

Цитата:
Так что, --with-libgnutls-prefix=/usr/local не помогает?


Нет.
Есть несколько *.с файлов по пути /usr/local/include/gnutls/, указывал и этот путь.
Всё одно:
Код:
checking for getaddrinfo... yes
checking for libgnutls-config... no
checking for libgnutls - version >= 0.1.0... no
*** The libgnutls-config script installed by LIBGNUTLS could not be found
*** If LIBGNUTLS was installed in PREFIX, make sure PREFIX/bin is in
*** your path, or set the LIBGNUTLS_CONFIG environment variable to the
*** full path to libgnutls-config.
configure: creating ./config.status
config.status: creating Makefile
config.status: creating iksemel.pc
config.status: creating src/Makefile
config.status: creating include/Makefile
config.status: creating tools/Makefile
config.status: creating test/Makefile
config.status: creating doc/Makefile
config.status: creating include/config.h
config.status: include/config.h is unchanged
config.status: executing depfiles commands
configure: WARNING: Unrecognized options: --with-gnutls


Added after 3 minutes:

Если следовать инструкции http://habrahabr.ru/company/tisystems/blog/137357/
то при выполнении ./configure --prefix=/usr --with-libgnutls-prefix=/usr --with-gnutls
получаем
Код:
checking for libgnutls - version >= 0.1.0... ./configure: line 21324: /usr/bin/libgnutls-config: No such file or directory
./configure: line 21325: /usr/bin/libgnutls-config: No such file or directory
./configure: line 21326: /usr/bin/libgnutls-config: No such file or directory
no
*** Could not run libgnutls test program, checking why...
*** The test program failed to compile or link. See the file config.log for the
*** exact error that occured. This usually means LIBGNUTLS was incorrectly installed
*** or that you have moved LIBGNUTLS since it was installed. In the latter case, you
*** may want to edit the libgnutls-config script: /usr/bin/libgnutls-config
#17

ну, для начала у configure скрипта iksemel нет опции --with-gnutls, а потом ее не стоит использовать.
во-вторых, указывать надо именно /usr/local, а не /usr/local/include.
в третьих, давайте сделаем ls -l /usr/local/bin/libgnutls-config

Added after 11 minutes:

Опять же, почему бы не поставить системный, а не самосборный iksemel?
Но если уж так хочется, а в системном gnutls нет libgnutls-config, то сделайте так:

create "/usr/bin/libgnutls-config" script like:

Код:
#!/bin/bash
if [ "$1" == "--version" ]; then
pkg-config --modversion gnutls
else
pkg-config $1 gnutls
fi


Configure script searches for lifbgnutls-config, which is obsolete and does not present in modern distributions

https://code.google.com/p/iksemel/issues/detail?id=29
#18

Цитата:
Опять же, почему бы не поставить системный, а не самосборный iksemel?

В стандартных репозитариях его нет.

Added after 46 minutes:

Танцы с бубном закончились,

PATH="$PATH:/sbin" ldconfig -n /usr/local/lib
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/lib

но Астер упорно не видит и не дает включить res_jabber и chan_jingle.
#19

Попробуйте сделать файлик типа lib.conf в папке /etc/ld.so.conf.d и указать в нем путь до библиотеки. Ну а далее уж ldconfig
_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
#20

Вроде получилось.
Еще вопрос: что бы при перескорке Астериска не грохнуть настройки нужно выполнить:
make
make install
а
make samples
make config
пропустить, или просто скопировать нужные файлы и вернуть обратно?
Спасибо.
#21

samples и config можете не делать
#22

Продолжение темы:
Пытаюсь сделать по http://xgu.ru/wiki/Jabber после "Мы можем сделать более масштабное решение: например, мы хотим, чтобы при поступлении звонка на номер 2XX, в соответствующий джаббер отправлялось сообщение. Для этого будем использовать макрос и небольшой скрипт.", но не могу сообразить как правильно сделать: Например мне звонят на номер 555-555 и через Jabber должно выйти какое-то сообщение, но не о том кто звонит, а произвольный текст. Как правильно это написать в файле /etc/asterisk/jabbtable, как я понимаю скрипт в файле /usr/local/bin/jabblog
Код:
#!/bin/sh
JABBTABLE=/etc/asterisk/jabbtable
jid="`grep "^$1 " $JABBTABLE | awk '{print $2}'`"
[ -z "$jid" ] || echo ${CALLERID} is calling | sendxmpp -f /var/lib/asterisk/.sendxmpprc "$jid"

ищет в /etc/asterisk/jabbtable по номеру пользователя Джаббера и выводит сообщение что такой-то номер звонил. А в моем случае будет текст и достаточно длинный, делать поиск по какому-то уникальному идентификатору?
Всё-таки мне эта строчка до конца не понятна jid="`grep "^$1 " $JABBTABLE | awk '{print $2}'`" (не силён) Smile
Как можно переделать под мои задачи. Хотя-бы алгоритмом киньте. Smile
Вообще суть задачи такова: 5 городских телефонных номера, по одному на каждый район города, т.е., например, в Ленинском районе провели рекламную акцию и указали что звоните на 555-555, в Октябрьском районе
указали что звонить надо на 444-444 и т.д. Я звоню на 555-555, там сидит оператор и "Астер выводит" ему именно нужное сообщение, указанное для номера 555-555. Если оператор занят, то астер переводит звонок уже
на второго оператора (у которого своя учетка в Джаббере) и ему тоже выводится это же самое сообщение. Естественно, оператору могут позвонить и с любого другого номера из 5 номеров, соответственно будет выведен другой текст.
Вот как-то так.
#24

Продолжим. Smile

Создал самый простой скрипт:
Код:
#!/bin/sh
echo "Текст"|sendxmpp "Текст" admin@192.168.1.10/asterisk

и сделал исполняемым. Если из командной строки запускать, то
сообщения уходят.
Диалплан
Код:
[macro-jabblog]
exten => _444,n,Set(ENV(CALLERID)=${CALLERID(all)})
exten => _444,n,System(/usr/local/bin/jabblog)
exten => s,n,Dial(SIP/${ARG1})

и контекст внутренних звонков
[phones]
exten => _444,1,Macro(jabblog,${EXTEN})


Сообщения не уходят и в CLI
Код:
WARNING[15822][C-0000019f]: app_macro.c:311 _macro_exec: Context 'macro-jabblog' for macro 'jabblog' lacks 's' extension, priority 1


Что не так то?
#25

Написано: в макросе контекста jabblog(macro-jabblog) не хватает экстеншена s с приоритетом 1