Чат  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

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

Раздел для разработчиков для обсуждения программных и аппаратных продуктов и их реализации.

Модератор: april22

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

Сообщение utcon » 07 фев 2012, 13:21

Поставил, настроил,
результат тот же.
Для 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
Последний раз редактировалось utcon 07 фев 2012, 13:40, всего редактировалось 1 раз.
utcon
 
Сообщений: 60
Зарегистрирован: 19 янв 2012, 14:26

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

Сообщение Vlad1983 » 07 фев 2012, 13:39

все входящие в [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-ти значные из Бузулука
Мобильные РФ 1.2 руб./мин. + НДС с посекундной тарификацией, CLI
Telegram: @rostel
Vlad1983
 
Сообщений: 4184
Зарегистрирован: 09 авг 2011, 11:51

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

Сообщение utcon » 07 фев 2012, 13:52

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

И такое подозрение, что он висит неприкаянным и не выполняется.
utcon
 
Сообщений: 60
Зарегистрирован: 19 янв 2012, 14:26

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

Сообщение utcon » 07 фев 2012, 13:56

Боже, какой я идиот
utcon
 
Сообщений: 60
Зарегистрирован: 19 янв 2012, 14:26

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

Сообщение utcon » 07 фев 2012, 20:55

Все равно не заводится,

Если входящий вызов приходит на номер описывающий 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 заканчивается на этапе дозвона по номеру, и сам процесс присоединения к конференции скрыт в другом месте.
utcon
 
Сообщений: 60
Зарегистрирован: 19 янв 2012, 14:26

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

Сообщение Vlad1983 » 07 фев 2012, 21:51

ничего там никуда не скрыто просто используется 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 ;
                        }
      }
...
Мобильные РФ 1.2 руб./мин. + НДС с посекундной тарификацией, CLI
Telegram: @rostel
Vlad1983
 
Сообщений: 4184
Зарегистрирован: 09 авг 2011, 11:51

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

Сообщение utcon » 08 фев 2012, 11:55

Спасибо большое, теперь все стало на свои места.

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

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

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

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

При звонке из формы пригласить участника переменные $name и $invite_num берутся из формы, формируется
document.WMOutCall.invite_num.focus()
которая используется out_call.php
Последний раз редактировалось utcon 08 фев 2012, 12:16, всего редактировалось 1 раз.
utcon
 
Сообщений: 60
Зарегистрирован: 19 янв 2012, 14:26

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

Сообщение Vlad1983 » 08 фев 2012, 12:10

и через форму проверил все нормально хоть одним хоть двумя словами хоть кириллицей хоть латиницей

форма кидает запрос на 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)));
Мобильные РФ 1.2 руб./мин. + НДС с посекундной тарификацией, CLI
Telegram: @rostel
Vlad1983
 
Сообщений: 4184
Зарегистрирован: 09 авг 2011, 11:51

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

Сообщение utcon » 08 фев 2012, 12:18

Не серчайте :).
Приложил скриншот во вложение.

У меня есть астериск, есть АТС, связанные между собой 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";
}
Вложения
Mistika.jpg
Последний раз редактировалось utcon 08 фев 2012, 12:36, всего редактировалось 1 раз.
utcon
 
Сообщений: 60
Зарегистрирован: 19 янв 2012, 14:26

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

Сообщение Vlad1983 » 08 фев 2012, 12:22

та я вообще как слон спокойный.
этож у вас не совсем как надо работает.
у меня вообще все ровно.
уже 8 крупных клиентов крутится и не жужжат.
Мобильные РФ 1.2 руб./мин. + НДС с посекундной тарификацией, CLI
Telegram: @rostel
Vlad1983
 
Сообщений: 4184
Зарегистрирован: 09 авг 2011, 11:51

Пред.След.

Вернуться в Разработка

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron
© 2008 — 2019 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH