Voicemail + a2billing
Опишите пожалуйста...
Смотрел по разным ссылкам. В частности http://allvoipsolutions.org/mydrupal/node/211 и http://www.csrdu.org/nauman/2011/02/08/e ... a2billing/
Но посмотрев код в текущей последней версии а2б нашел какие то наработки по войсмейлу. В вебе и в базе данных не нашел ни одного упоминания. Подскажите, может кто знает где активируется войсмейл.
Интересует в частности DID -> voicemail -> email.
По ссылкам, указанным выше, можно найти ответ на данный вопрос
_________________
https://github.com/nixonch/a2billing
Так же использована статья http://www.voip-info.org/wiki/view/Aster ... +Voicemail).
Соответственно нужно использовать realtime архитектуру астериска.
Настройка voicemail.conf
| Код: |
| [general] searchcontexts=yes |
Настройка extconfig.conf
| Код: |
| voicemail => mysql,a2billing_db,voicemail_users |
Создание таблицы voicemail_users в базе данных a2billing_db
Базовый вариант:
| Код: |
| CREATE TABLE `voicemail_users` ( `uniqueid` int(11) NOT NULL auto_increment, `customer_id` varchar(10) collate utf8_bin default NULL, `context` varchar(10) collate utf8_bin NOT NULL, `mailbox` varchar(15) collate utf8_bin NOT NULL, `password` int(4) NOT NULL, `fullname` varchar(150) collate utf8_bin default NULL, `email` varchar(50) collate utf8_bin default NULL, `pager` varchar(50) collate utf8_bin default NULL, `stamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, PRIMARY KEY (`uniqueid`), KEY `mailbox_context` (`mailbox`,`context`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1; |
Расширенный вариант:
| Код: |
| CREATE TABLE IF NOT EXISTS `voicemail_users` ( `uniqueid` int(4) NOT NULL auto_increment, `customer_id` varchar(10) collate utf8_bin default NULL, `context` varchar(10) collate utf8_bin NOT NULL, `mailbox` varchar(15) collate utf8_bin NOT NULL, `password` int(4) NOT NULL, `fullname` varchar(150) collate utf8_bin default NULL, `email` varchar(50) collate utf8_bin default NULL, `pager` varchar(50) collate utf8_bin default NULL, `tz` varchar(10) collate utf8_bin default 'central', `attach` enum('yes','no') collate utf8_bin NOT NULL default 'yes', `saycid` enum('yes','no') collate utf8_bin NOT NULL default 'yes', `dialout` varchar(10) collate utf8_bin default NULL, `callback` varchar(10) collate utf8_bin default NULL, `review` enum('yes','no') collate utf8_bin NOT NULL default 'no', `operator` enum('yes','no') collate utf8_bin NOT NULL default 'no', `envelope` enum('yes','no') collate utf8_bin NOT NULL default 'no', `sayduration` enum('yes','no') collate utf8_bin NOT NULL default 'no', `saydurationm` tinyint(4) NOT NULL default '1', `sendvoicemail` enum('yes','no') collate utf8_bin NOT NULL default 'no', `delete` enum('yes','no') collate utf8_bin NOT NULL default 'no', `nextaftercmd` enum('yes','no') collate utf8_bin NOT NULL default 'yes', `forcename` enum('yes','no') collate utf8_bin NOT NULL default 'no', `forcegreetings` enum('yes','no') collate utf8_bin NOT NULL default 'no', `hidefromdir` enum('yes','no') collate utf8_bin NOT NULL default 'yes', `stamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, PRIMARY KEY (`uniqueid`), KEY `mailbox_context` (`mailbox`,`context`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1; |
Изменение common/lib/common.defines.php
| Код: |
| -- define ("ACT_VOICEMAIL", false); ++ define ("ACT_VOICEMAIL", true); |
После этого в админке a2b в разделе Customers появляются поля PERMITTED VOICEMAIL и ACTIVE VOICEMAIL SERVICE, с соответствующими значениями Yes и No
Изменение common/lib/Class.A2Billing.php
Делаю изменения в функции call_did (при необходимости можно поправить и call_sip_iax_buddy)
(У меня начинается с строки 1508)
| Код: |
| if ($this->voicemail) { if (($dialstatus =="CHANUNAVAIL") || ($dialstatus == "CONGESTION") || ($dialstatus == "NOANSWER") || ($dialstatus =="BUSY")) { // The following section will send the caller to VoiceMail with the unavailable priority.\ -- $dest_username = $this->username; -- $this -> debug( INFO, $agi, __FILE__, __LINE__, "[STATUS] CHANNEL ($dialstatus) - GOTO VOICEMAIL ($dest_username)"); -- $vm_parameters = $this -> format_parameters ($dest_username.'|s'); ++ $did_number = $this->dnid; ++ $this -> debug( INFO, $agi, __FILE__, __LINE__, "[STATUS] CHANNEL ($dialstatus) - GOTO VOICEMAIL ($did_number)"); ++ $vm_parameters = $this -> format_parameters ($did_number.'|s'); $agi-> exec(VoiceMail, $vm_parameters); |
Замену $dest_username на $did_number произвел по причине привязки дида к войсмейл, а не как было аккаунта клиента к войсмейл. (Кто как пожелает)
Заливка данных в новую таблицу:
Здесь выполнена заливка таблицы по диду, т.е. mailbox будет содержать номер DIDa.
mysql -ua2billinguser -pPassWord -D a2billing_db -e truncate table voicemail_users;
insert into voicemail_users(customer_id,context,mailbox, password, fullname, email)
select S.id_cc_card, 'default', D.did, S.secret, concat(C.lastname,' ',C.firstname) fullname, C.email from cc_sip_buddies S, cc_card C , cc_did_destination E, cc_did D where S.id_cc_card =C.id and E.id_cc_card = C.id and E.id_cc_did = D.id;
Автоматизацию заливки данных в таблицу voicemail_users не осуществлял, т.к. эта задача лежит на плечах веб-программиста
Интерфейс в кастомере для просмотра войспочты есть?
_________________
https://github.com/nixonch/a2billing
По видимому файл A2B_entity_voicemail.php, ссылка на который появляется в ЛК, и является как раз этим платным модулем за 600 евро.
Ну и надо будет что то придумать с проигрыванием звукового файла перед сигналом "пииип". Идея такова, чтобы проигрывался стандартный звуковой файл(на нужном языке), но по желанию чтобы была возможность для каждого дида проигрывать свой файл.
Изменил в common/lib/Class.A2Billing.php. Выглядит теперь так:
| Код: |
| if ($this->voicemail) { if (($dialstatus =="CHANUNAVAIL") || ($dialstatus == "CONGESTION") || ($dialstatus == "NOANSWER") || ($dialstatus =="BUSY")) { // The following section will send the caller to VoiceMail with the unavailable priority.\ $did_number = $this->dnid; $this -> debug( INFO, $agi, __FILE__, __LINE__, "[STATUS] CHANNEL ($dialstatus) - GOTO VOICEMAIL ($did_number)"); $agi -> answer(); $filename = "/var/lib/asterisk/DID/$did_number.wav"; if (file_exists($filename)) { $agi-> stream_file("/var/lib/asterisk/DID/$did_number"); } else { $agi-> stream_file('vm-intro'); } $vm_parameters = $this -> format_parameters ($did_number.'|s'); $agi-> exec(VoiceMail, $vm_parameters); } } |