First time here? Check out the FAQ!

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

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

1

Добрый день.

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

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

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

спросил May 5 '12

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 (Jul 26 '12)edit

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С в нужных местах делаете кнопки, при нажатии на которые вызывается переход по ссылке и все будет работать.

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

ответил May 5 '12

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

обновил May 6 '12

Comments

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

Aven (May 5 '12)edit

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

switch (May 6 '12)edit

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

komrad123 (May 6 '12)edit

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

switch (May 6 '12)edit

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

komrad123 (May 6 '12)edit

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

switch (May 6 '12)edit
1

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

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

komrad123 (May 6 '12)edit

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

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

switch (May 6 '12)edit

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

komrad123 (May 6 '12)edit

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

switch (May 6 '12)edit

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

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

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

tigreno (May 10 '12)edit
1

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

switch (May 11 '12)edit
1

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

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

ответил May 5 '12

andy-none Gravatar andy-none
56 25 7 25
1

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

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

ответил May 5 '12

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 (May 10 '12)edit

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

tigreno (May 11 '12)edit

Ваш ответ

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 ленту новостей

Статистика

Задан: May 5 '12

Просмотрен: 33,457 раз

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

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