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

ami Asterisk + CRM + Telnet

0

Здравствуте! Алгоритм таков Поступает входящий звонок, звонят ВСЕ зареганые сипы. НЕОБХОДИМО:

определить КАКОЙ СИП поднял трубу, вычислить его IP и дополнительно послать в определенный порт этого IP номер с которого был звонок.

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

спросил 2011-04-13 15:37:08 +0400

Wolf Gravatar Wolf
1 1 2
http://freesip.net/

обновил 2011-04-13 17:06:24 +0400

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

6 Ответов

0

его родимого скрещиваем :-(

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

ответил 2011-04-13 16:28:52 +0400

Wolf Gravatar Wolf
1 1 2
http://freesip.net/
0

вы случаем не Такси-диспетчер используете?:)

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

ответил 2011-04-13 15:58:36 +0400

romariosar Gravatar romariosar flag of Russian Federation
588 93 11 44
http://www.webunix.ru/
0

пару лет назад создателю этой программы я высылал AGI и пример диалплана, попросите у него.

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

ответил 2011-04-13 16:41:48 +0400

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

Comments

морозяться. а не возможно ли поднять переписку? Wolf ( 2011-04-13 16:43:32 +0400 )редактировать
я поискал, но ничего не нашел. Давно это было, его клиент с Украины так и не заплатил за работу по интеграции... switch ( 2011-04-13 16:49:55 +0400 )редактировать
0

Я использовал trixbox 2.8.0.3, дам я вам диалплан с комментами, его надо будет положить в файл extensionsoverridefreepbx.conf, вот собственно диалплан:

[ext-queues] ; это очередь под номером 300 fkjujhbnv pdjyzn dct
include => ext-queues-custom
exten => 300,1,Macro(user-callerid,)
exten => 300,n,Answer
exten => 300,n,Set(__BLKVM_OVERRIDE=BLKVM/${EXTEN}/${CHANNEL})
exten => 300,n,Set(__QAZ=${CALLERID(num)}) ; выясняем номер звонящего
exten => 300,n,Set(__BLKVM_BASE=${EXTEN})
exten => 300,n,Set(DB(${BLKVM_OVERRIDE})=TRUE)
exten => 300,n,ExecIf($["${REGEX("(M[(]auto-blkvm[)])"
${DIAL_OPTIONS})}" != "1"],Set,_DIAL_OPTIONS=${DIAL_OPTIONS}M(auto-blkvm))
exten => 300,n,Set(__NODEST=${EXTEN})
exten =>
300,n,Set(MONITOR_FILENAME=/var/spool/asterisk/monitor/q${EXTEN}-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${UNIQUEID})
exten => 300,n,Set(__CWIGNORE=TRUE)
exten => 300,n,Queue(300,t,,,270)
exten => 300,n,dbDel(${BLKVM_OVERRIDE})
exten => 300,n,Set(__NODEST=)
exten => 300,n,Set(__CWIGNORE=)
exten => 300,n,Goto(app-blackhole,hangup,1)
exten => 300*,1,Macro(agent-add,300,)
exten => 300**,1,Macro(agent-del,300,300)

; end of [ext-queues]

В предыдущем диалплане вызывается контекст :

[macro-auto-blkvm]
include => macro-auto-blkvm-custom
exten => s,1,Set(__MACRO_RESULT=)
exten => s,n,macro(unix) ; на этом этапе мы узнаем кто поднял трубку, и
запускаем свой макрос, я его назвал unix
exten => s,n,dbDel(${BLKVM_OVERRIDE})

; end of [macro-auto-blkvm]


[macro-unix]

exten => s,1,noop(${QAZ}) ; выводим в CLI номер звонящего 
exten => s,2,noop(${CALLERID(num)})   ; здесь CALLERID(num), это номер
того кто поднял трубку.
exten => s,3,System(/var/spool/asterisk/tmp/tdtn ${QAZ}
${CALLERID(num)}) ; здесь мы запускаем наш bash скрипт с параметрами
первый параметр кто звонит, второй кто поднял трубку

; end of [macro-unix]

вот скрипт: у меня все просто номер 101 находится на 192.168.0.101, 102 на 192.168.0.102 и т.д. ну чтобы проще было определять куда телнетом цепляться. ниже скрипт

#!/bin/bash

w=$1
op=$2


wc=" COF \t $w \n "
((/bin/sleep 1 ; /bin/echo -e $wc ; /bin/sleep 1 ; /bin/echo " " ; ) |
telnet 192.168.0.$op 333)

exit

соответсвенно должен быть на каждом принимающем компе задейсмтвовам tcp сервер с портом 333 и tcpipmode = 1

все можешь наслаждаться:)

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

ответил 2011-04-14 09:51:12 +0400

romariosar Gravatar romariosar flag of Russian Federation
588 93 11 44
http://www.webunix.ru/
0

Спасибо за подсказки!!!

Собсно решил сам таким способом

В extentions.conf [global] добавил

ip101 = XXX.XXX.XXX.XXX

Это SIP <-> IP

DESTPORT = XXXX

[incoming_lkm]

exten => _12,1,Set(CHAN=${RAND(101,105)})

exten => _12,n,noop(${CHAN})

exten => _12,n,Dial(SIP/${CHAN},7,mtM(send,${CHAN}))

[macro-send]

exten => s,1,System(echo -e "Message: Call \r\n CallerID: ${CALLERID(num)} \r\n" | nc ${ip${ARG1}} ${DESTPORT})

Собственно и все. По рандому выбирается SIP, потом в соответствии с ним во время Dial выполняется макрос по потсылке нужной инфы на нужный порт и IP.

Спасибо всем, считаю тему закрытой...

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

ответил 2011-04-14 11:07:13 +0400

Wolf Gravatar Wolf
1 1 2
http://freesip.net/
0

зато я нашел скрипт! Оказалось, что он с тех пор в составе trixbox embedded:

#!/usr/bin/env php
<?php
$shortopts  = "";
$shortopts .= "i:";  //ipaddr
$shortopts .= "p:";  //port
$shortopts .= "m:";  //message

$options = getopt($shortopts);
print_r($options);

$fp = fsockopen($options['i'], $options['p'], $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    $out = str_replace("<br>","\r\n",$options['m']);
    fwrite($fp, $out);
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
}
?>

Запускать нужно из командной строки:

#bash ./taxi-disp.php -i 192.168.0.123 -p 1111 -m ХХХ

опции:

 -i это адрес, куда слать
 -p это порт, куда слать
 -m это команда. Описание API (команд) нужно взять у девелопера

определить адрес можно запросом в astdb по ключу

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

ответил 2011-04-13 17:02:57 +0400

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

обновил 2011-04-13 17:04:48 +0400

Comments

Это корошо, но проблема в том что мне надо: определить КАКОЙ СИП поднял трубу, вычислить его IP и дополнительно послать в определенный порт этого IP номер с которого был звонок. Wolf ( 2011-04-13 17:13:39 +0400 )редактировать
см. опцию М команды DIAL switch ( 2011-04-13 17:41:46 +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 ленту новостей

Статистика

Задан: 2011-04-13 15:37:08 +0400

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

Обновлен: Apr 14 '11

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