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

Интеграция Asterisk и 1С с применение аппаратных телефонов

1

Добрый день.

Есть asterisk 1.8, 1C 8.2 и Linksys SPA502. Задача следующая:

В 1С сделать волшебную кнопку, при нажатии на которую asterisk будет набирать номер контрагента и в случае успеха будет соединять с АППАРАТНЫМ телефоном менеджера. То есть я не хочу общаться через 1С, я хочу набирать номер через 1С и соединять с аппаратом который стоит рядом с компьютером.

Дайте пожалуйста направление, в котором необходимо копать????

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

спросил 2012-05-05 16:09:10 +0400

tigreno Gravatar tigreno
11 1 2 3

Comments

Есть несколько компонент написаных специально для работы из 1С:

Бесплатная http://simplit.com.ua/index.php/ip-phone-menu/ipphone-integration-menu/204-1cphone-free

Платная у нас http://telefon1c.ru/asterisk/

Для выполнения нужного действия нужно вызвать следующую команду: http://wiki.miko.ru/doc:1cajam:api:originate

jorikfon ( 2012-07-26 13:28:56 +0400 )редактировать

3 Ответа

3

Самый простой способ - сделать скрипт на пхп, который по GET запросу создает звонок в нужном направлении через AMI или call файл. Например так:

<?
#variables: $from, $to
$fileContent =  "Channel: Local/".$from."@from-internal\r\n".
        "Callerid: Web Call: ".$from."-->".$to." \r\n".
        "Context: from-internal \r\n".
        "Extension: ".$to."\r\n".
        "Priority: 1\r\n";

$tmpfname = tempnam("/var/spool/asterisk/outgoing", "FOO");

$handle = fopen($tmpfname, "w");
fwrite($handle, $fileContent);
fclose($handle);
?>

Если этот файл с именем click2call.php расположить в /var/www/html/, то при открытии ссылки http://you.server.ip/click2call.php?from=100&to=89173422347 сервер соединит эти два номера. В 1С в нужных местах делаете кнопки, при нажатии на которые вызывается переход по ссылке и все будет работать.

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

ответил 2012-05-05 22:08:44 +0400

switch Gravatar switch
8334 11 7 91
http://lynks.ru/

обновил 2012-05-06 10:48:25 +0400

Comments

Нельзя создавать call-файлы непосредственно в этой папке.

Aven ( 2012-05-05 23:51:57 +0400 )редактировать

Можно, если делать это быстро и сразу же закрывать файл.

switch ( 2012-05-06 09:47:53 +0400 )редактировать

switch, это рейс-кондишн в чистом виде. не надо так делать.

komrad123 ( 2012-05-06 10:33:40 +0400 )редактировать

А если по-русски?

switch ( 2012-05-06 10:40:07 +0400 )редактировать

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

komrad123 ( 2012-05-06 10:48:00 +0400 )редактировать

Спасибо, кэп! Но в реальных системах я никогда не использую call файлы, а этот код привел в качестве примера новичку, для его задачи это оптимальное решение. Я же написал: "Самый простой способ...". Если хочешь, то можешь нагрузить человека парой мегабайт кода на дотнете.

switch ( 2012-05-06 10:50:41 +0400 )редактировать
1

зачем дотнет ? mv вполне себе атомарная операция идеально подойдет для этого случая.

P.S. успешно использую call файлы в реальных системах, полет нормальный.

komrad123 ( 2012-05-06 11:02:31 +0400 )редактировать

Уффф... Давай еще придеремся к чистоте кода, что можно было бы сделать в 100500 раз быстрее и проще, а? Я вроде по-русски написал, что это самый простой способ. И это нифига не значит, что самый лучший, эффективный и абсолютно без ошибок. Я прекрасно знаю, что писать в этот каталог не стоит, но это не критично при небольшой нагрузке и на современных процессорах. По крайней мере у меня никаких проблем с этим не возникает, ибо все изменения в файловой системе хранятся в tmpfs и запись происходит мгновенно. А на большой нагрузке и в реальных приложениях call файлы не использую потому что не удобно.

Хотя уже объяснял уже все это...

switch ( 2012-05-06 11:10:01 +0400 )редактировать

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

komrad123 ( 2012-05-06 11:21:27 +0400 )редактировать

ну добавь эту строку, вместо того чтобы флейм разводить. Я говорю, что у меня багов нет.

switch ( 2012-05-06 11:25:33 +0400 )редактировать

Если я правильно понял то лучше вначале записать файл в темповую папку а потом его перенести в /var/spool/asterisk/outgoing ????

А как часто Астерикс читает call файлы??? а можно какой нибудь юзер гайд по этой теме???

И еще (не силен в пхп) скопировал скрипт запускаю выдает ".$to."\r\n". "Context: from-internal\r\n". "Extension: ".$to."\r\n". "Priority: 1\r\n"; $tmpfname = tempnam и т.д. Я понимаю что косяк с ковычками, но с какой не могу сообразить

tigreno ( 2012-05-11 00:01:53 +0400 )редактировать
1

Да, лучше создавать в одном месте, затем не копировать, а перемещать. Астериск вроде как отслеживает изменения средствами ОС. Доп. инфа тут: http://voip.rus.net/tiki-index.php?page=Asterisk+auto-dial+out

switch ( 2012-05-11 08:10:08 +0400 )редактировать
1

Через call файлы или через AMI.

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

ответил 2012-05-05 16:18:17 +0400

andy-none Gravatar andy-none
56 25 4 21
1

Вот компонент, который поможет сделать такую кнопку. См. метод Оригинация: http://www.buligin.com/ejauja.html

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

ответил 2012-05-05 16:21:41 +0400

igorg Gravatar igorg flag of Russian Federation
2244 3 7 40
http://igorg.ru/

Comments

Я кстати читал эту статью... но видно не до читал.... спасибо что ткнули носом.

Не могу разобраться с параметром какнал. Допустим надо позвонить с номера 100 (локальный) на номер 7777777

1). Оригинация ("100", "7777777", "SIP/100/", "default") - 1С выдает Err: Таймаут оригинации, а консоль молчит

2.)Оригинация ("100", "7777777", "SIP/провайдер во вне/", "default") дозваниваюсь до абонента но тут же происходит сброс, причем такое ощущение что не передается от кого звонок. (${CALLERID(number) пустое)

tigreno ( 2012-05-10 23:55:16 +0400 )редактировать

Все разобрался.... глюк какой то был.... ребутнул астерикс и все забегало Но мануал все равно нужен

tigreno ( 2012-05-11 12:48:26 +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)!
[скрыть предварительный просмотр]

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

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

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

Статистика

Задан: 2012-05-05 16:09:10 +0400

Просмотрен: 30,904 раз

Обновлен: May 06 '12

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