Страница 2 из 10

Re: Web-MeetMe сбор конференции по адресной книге

Добавлено: 07 фев 2012, 13:21
utcon
Поставил, настроил,
результат тот же.
Для SIP пользователей имя в текущей конференции отображается из users.conf

Для городских номеров --- Без имени.

Единственное, что менял в конфигах - /etc/asterisk/extensions.conf добавил две строчки для выхода в город (через dahdi pri)

Код: Выделить всё

[meetme_out]

exten => _XXXX,1,NoOP( ${CALLERID(name)} ${CALLERID(num)} )
exten => _XXXX,n,Dial(SIP/${EXTEN})

exten => _XXXXXXX,1,NoOP( ${CALLERID(name)} ${CALLERID(num)} )
exten => _XXXXXXX,n,Dial(Dahdi/g1/0${EXTEN})

exten => _83532XXXXXX,1,NoOP( ${CALLERID(name)} ${CALLERID(num)} )
exten => _83532XXXXXX,n,Dial(SIP/oren-kamailio/${EXTEN:5})


[meetme]
exten => s,1,MeetMe()
exten => h,1,ExecIf(0${MEETMEBOOKID}?NoOp(${CALLERID(name)}))
exten => h,n,Set(CDR(userfield)=${MEETMEBOOKID})


[inbound]
exten => _X!,1,GoSubIf(0${CALLERID(num)}?sub-cidlookup,s,1)
exten => _X!,n,NoOP( ${CALLERID(name)} ${CALLERID(num)} )
;exten => _X!,n,Playback(conf-getconfno,noanswer)
exten => _X!,n,Goto(meetme,s,1)

[sub-cidlookup]
exten => s,1,GotoIf($[ ${LEN(${CALLERID(num)})} = 10 ]?add8)
exten => s,n,GotoIf($[ $[ ${LEN(${CALLERID(num)})} = 11 ] & $[ "${CALLERID(num):0:1}" = "8" ] ]?end)
exten => s,n,ExecIf( $[${LEN(${CALLERID(num)})} = 6 ]?Set(CALLERID(num)=83532${CALLERID(num)}) )
exten => s,n,ExecIf( $[${LEN(${CALLERID(num)})} = 5 ]?Set(CALLERID(num)=835342${CALLERID(num)}) )
exten => s,n,Goto(end)
exten => s,n(add8),Set(CALLERID(num)=8${CALLERID(num)})
exten => s,n(end),Set(CALLERID(name)=${CALLERID(num)})
exten => s,n,MYSQL(Connect connid localhost meetme2 cn927hajr21KEFSJ meet2)
;exten => s,n,MYSQL(Query resultid ${connid} SET NAMES utf8)
exten => s,n,MYSQL(Query resultid ${connid} SELECT name,rx,tx FROM addressbook WHERE number = '${CALLERID(num)}' LIMIT 1)
exten => s,n,MYSQL(Fetch fetchid ${resultid} NAMETEMP VOLRX VOLTX)
exten => s,n,MYSQL(Clear ${resultid})
exten => s,n,MYSQL(Disconnect ${connid})
exten => s,n,ExecIf($["${VOLRX}" != "0"]?Set(VOLUME(RX)=${VOLRX}))
exten => s,n,ExecIf($["${VOLTX}" != "0"]?Set(VOLUME(TX)=${VOLTX}))
exten => s,n,ExecIf($["foo${NAMETEMP}" != "foo"]?Set(CALLERID(name)=${NAMETEMP}))
exten => s,n,Return()
Когда я приглашаю через веб - входящее имя то которое в адрессной книге, но после того как человек подключился - в интерфейсе - висит Без имени, :(

В базе например есть запись

Код: Выделить всё

mysql> use meet2
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select * from addressbook
    -> ;
+----+---------------------------+---------+----+----+
| id | name                      | number  | rx | tx |
+----+---------------------------+---------+----+----+
|  1 | Test | 8113    |  6 |  6 |
|  3 | Test | 5068821 |  0 |  0 |
+----+---------------------------+---------+----+----+
2 rows in set (0.00 sec)

Звоню на номер 5068821 из веба, подключает к конференции,
а в вебе Без имени.


В это время в логах

Код: Выделить всё

    -- Executing [5068821@meetme_out:1] NoOp("Local/5068821@meetme_out-9a92;2", " Test 5068821 ") in new stack
    -- Executing [5068821@meetme_out:2] Dial("Local/5068821@meetme_out-9a92;2", "Dahdi/g1/05068821") in new stack
    -- Requested transfer capability: 0x00 - SPEECH
    -- Called Dahdi/g1/05068821
    -- DAHDI/i1/05068821-4 is proceeding passing it to Local/5068821@meetme_out-9a92;2
  
    -- DAHDI/i1/05068821-4 is ringing
  
    -- DAHDI/i1/05068821-4 answered Local/5068821@meetme_out-9a92;2

  == Parsing '/etc/asterisk/meetme.conf':   == Found
    -- Created MeetMe conference 1023 for conference '5'
    -- <Local/5068821@meetme_out-9a92;1> Playing 'conf-onlyperson.slin' (language 'en')

    -- Started music on hold, class 'default', on Local/5068821@meetme_out-9a92;1
    -- Stopped music on hold on Local/5068821@meetme_out-9a92;1
    -- Started music on hold, class 'default', on Local/5068821@meetme_out-9a92;1
voip*CLI> meetme list 5 concise
1!!!Local/5068821@meetme_out-9a92;1!!!!!-1!00:00:12
 

Re: Web-MeetMe сбор конференции по адресной книге

Добавлено: 07 фев 2012, 13:39
Vlad1983
все входящие в [inbound]
перепишите под себя главное чтоб выполнялось
exten => _X!,1,GoSubIf(0${CALLERID(num)}?sub-cidlookup,s,1)

звоним
смотрим в консоли что выведет следующаа следом
exten => _X!,n,NoOP( ${CALLERID(name)} ${CALLERID(num)} )

так и забиваем в адресную книгу

правим под себя эту часть (надо чтоб номер приводился к единому формату при звонках из вне)
[sub-cidlookup]
exten => s,1,GotoIf($[ ${LEN(${CALLERID(num)})} = 10 ]?add8)
exten => s,n,GotoIf($[ $[ ${LEN(${CALLERID(num)})} = 11 ] & $[ "${CALLERID(num):0:1}" = "8" ] ]?end)
exten => s,n,ExecIf( $[${LEN(${CALLERID(num)})} = 6 ]?Set(CALLERID(num)=83532${CALLERID(num)}) ) ; у нас 6-ти значные Caller ID при звонках из Оренбурга
exten => s,n,ExecIf( $[${LEN(${CALLERID(num)})} = 5 ]?Set(CALLERID(num)=835342${CALLERID(num)}) ) ; и 5-ти значные из Бузулука

Re: Web-MeetMe сбор конференции по адресной книге

Добавлено: 07 фев 2012, 13:52
utcon
Глупый вопрос, а кем вызывается макрос [inbound] ?
У меня просто слово inbound встречается один раз в имени макроса в файле /etc/asterisk/extensions.conf.

И такое подозрение, что он висит неприкаянным и не выполняется.

Re: Web-MeetMe сбор конференции по адресной книге

Добавлено: 07 фев 2012, 13:56
utcon
Боже, какой я идиот

Re: Web-MeetMe сбор конференции по адресной книге

Добавлено: 07 фев 2012, 20:55
utcon
Все равно не заводится,

Если входящий вызов приходит на номер описывающий meetme деревянно, то имя отображается,
например я описал внутренний номер 8000 для meetme

Код: Выделить всё

exten => 8000,1,NoOP( ${CALLERID(name)} ${CALLERID(num)} )
exten => 8000,2,Set(CALLERID(name)=${meeting_abook(${CALLERID(num)})})
exten => 8000,3,MeetMe()

Звоню на него, набираю код созданной через веб конференции ---- супер, в активной конференции он появляется и имя прописывается..

НО

Если я приглашаю через веб этот номер в конференцию, - ничего нет.
На каком этапе происходит подключение к конференции, если ты приглашаешь человека через веб ? Есть какой то контекст который описывает это ?

Чувствую, что это как то связано с Realtime meetme, потому что пробовал даже комментировать полностью контекст [meetme] из примера extensions.conf, все равно человек присоединяется к созданной конференции, видимо участие extensions.conf заканчивается на этапе дозвона по номеру, и сам процесс присоединения к конференции скрыт в другом месте.

Re: Web-MeetMe сбор конференции по адресной книге

Добавлено: 07 фев 2012, 21:51
Vlad1983
ничего там никуда не скрыто просто используется Originate
https://wiki.asterisk.org/wiki/display/ ... _Originate

кажись понял в вас в lib/defines.php выставлено define ("CHAN_TYPE", "Local");

с вызовами через Local особо не экспериментировал (не лублу я этот механизм)
выставите
define ("CHAN_TYPE", "SIP");
или вообще закомментить

define ("OUT_PEER", "8000"); // это для Local
define ("OUT_CONTEXT", "meetme"); // это тоже. впринципе можно не трогать, если define ("CHAN_TYPE", "SIP")

и опишите диалплан в call_operator.php и call_operator_add.php

например для, call_operator_add.php

Код: Выделить всё

...
		if ( CHAN_TYPE == "Local") {
			$channel = CHAN_TYPE . "/" . $invite_num . "@" . LOCAL_CONTEXT . "/n" ; //вы вызываете так
		} else {
                        if ($invite_num==100) {                                                      // лучше так
                                $channel = "SIP/" . $invite_num ;                                // описать диалплан напрямую
                        } elseif (preg_match("/^83532(\d{6})/",$invite_num,$tmp)) {
                                $channel = "SIP/oren-kamailio/" . $tmp[1] ;
                        } else {
                                $channel = "SIP/oren-kamailio/" . $invite_num ;
                        }
		}
...

Re: Web-MeetMe сбор конференции по адресной книге

Добавлено: 08 фев 2012, 11:55
utcon
Спасибо большое, теперь все стало на свои места.

По моему не передается переменная $name из формы пригласить участника.
(не из адресной книги а через ту форму в которой надо заполнить и имя и номер)
Ведь я правильно понимаю. что $name берется из формы приглашения ?

Описал диалплан, опять таки звонок идет а имя не отображается, хотя я честно его ввел в форму (одним словом на латинице.

Например последовательность при звонке из адресной книги:

out_call ==> out_call_book.php ==> call_operator_add.php

При звонке из формы пригласить участника переменные $name и $invite_num берутся из формы, формируется
document.WMOutCall.invite_num.focus()
которая используется out_call.php

Re: Web-MeetMe сбор конференции по адресной книге

Добавлено: 08 фев 2012, 12:10
Vlad1983
и через форму проверил все нормально хоть одним хоть двумя словами хоть кириллицей хоть латиницей

форма кидает запрос на call_operator.php
раскомментируйте в нем 110 строку
echo $callerid;

и смотрите что вываливает и одновременно, что в консоли астериска

кстати, щас проверил даже через Local нормально всё

Код: Выделить всё

        -- Executing [2345@meetme_out:1] Answer("Local/2345@meetme_out-576f;2", "") in new stack
  == Parsing '/etc/asterisk/meet2/meetme.conf':   == Found
  == Manager 'meet' logged off from 127.0.0.1
    -- Created MeetMe conference 1023 for conference '59835'
    -- <Local/2345@meetme_out-576f;1> Playing 'conf-onlyperson.slin' (language 'en')
    -- Executing [2345@meetme_out:2] NoOp("Local/2345@meetme_out-576f;2", " твою мать вс работает 2345 ") in new stack
единственное обрезало букву "ё", но это надо просто чуть выше регекспы поправить
$name = iconv("cp1251","UTF-8",preg_replace("/[^\x30-\x39\x41-\x5A\x61-\x7A\x20\x5F\xA8\xB8\xC0-\xFF]/","",iconv("UTF-8","cp1251",$name)));

Re: Web-MeetMe сбор конференции по адресной книге

Добавлено: 08 фев 2012, 12:18
utcon
Не серчайте :).
Приложил скриншот во вложение.

У меня есть астериск, есть АТС, связанные между собой PRI.
Через форму пригласить участника завожу внутренний номер на АТС и имя для этого номера,
Конектит, (см. скриншот).
В это время в логах астериска вот такая тишина.

Код: Выделить всё

  == Manager 'admin' logged on from 127.0.0.1
    -- Requested transfer capability: 0x00 - SPEECH
  == Manager 'admin' logged on from 127.0.0.1
  == Manager 'admin' logged off from 127.0.0.1
  == Manager 'admin' logged on from 127.0.0.1
  == Manager 'admin' logged off from 127.0.0.1
  == Manager 'admin' logged on from 127.0.0.1
  == Manager 'admin' logged off from 127.0.0.1
  == Manager 'admin' logged on from 127.0.0.1
  == Manager 'admin' logged off from 127.0.0.1
  == Manager 'admin' logged on from 127.0.0.1
  == Manager 'admin' logged off from 127.0.0.1
  == Manager 'admin' logged off from 127.0.0.1
  == Parsing '/etc/asterisk/meetme.conf':   == Found
    -- Created MeetMe conference 1023 for conference '5'
    -- <DAHDI/i1/6126-1> Playing 'conf-onlyperson.alaw' (language 'en')
  == Manager 'admin' logged on from 127.0.0.1
  == Manager 'admin' logged off from 127.0.0.1
  == Manager 'admin' logged on from 127.0.0.1
  == Manager 'admin' logged off from 127.0.0.1
  == Manager 'admin' logged on from 127.0.0.1
  == Manager 'admin' logged off from 127.0.0.1
    -- Started music on hold, class 'default', on DAHDI/i1/6126-1

В файле call_operator.php прописал для 6126 канал

Код: Выделить всё

if ($_SESSION['auth'] && $invite_num !="" && $data != "" && $bookid != "") {
        if ($action=='outboundcall' || $action=='quickcall'){


                $as = new AGI_AsteriskManager();
                // && CONNECTING
                $res = $as->connect();
                if (!$res){ echo _("Error connection to the manager")."!"; exit();}

                if ( CHAN_TYPE == "Local") {
                        $channel = CHAN_TYPE . "/" . $invite_num . "@" . LOCAL_CONTEXT . "/n" ;
                } else {
                        if ($invite_num==6126) {
                                $channel = "Dahdi/g1/" . $invite_num ;
                        } elseif (preg_match("/^83532(\d{6})/",$invite_num,$tmp)) {
                                $channel = "SIP/" . $tmp[1] ;
                        } else {
                                //$channel = "SIP/buz-cisco/#2" . $invite_num ;
                                $channel = "SIP/" . $invite_num ;
                        }
                }
                $application = "MeetMe";
                $data = $data;
                $priority = 1;
                $context = OUT_CONTEXT;
                $timeout = 60000;
                $callerid = "\"$name\" <$invite_num>";
                //$variable = "CDR(bookId)=$bookid,CDR(CIDnum)=$invite_num,CDR(CIDname)=$name";
                $variable = "CDR(userfield)=$bookid,VOLRX=0,VOLTX=0"; //,DYNAMIC_FEATURES=volumerxdec#volumetxinc";
                echo $callerid;
                $res = $as->Originate ($channel, $exten, $context, $priority, $timeout, $callerid, $variable, $account, $application, $data);

                $actiondone=1;

                // && DISCONNECTING
                $as->disconnect();
        }
} else {
        $res['Message'] = "Naughty";
}

Re: Web-MeetMe сбор конференции по адресной книге

Добавлено: 08 фев 2012, 12:22
Vlad1983
та я вообще как слон спокойный.
этож у вас не совсем как надо работает.
у меня вообще все ровно.
уже 8 крупных клиентов крутится и не жужжат.