forum.bitel.ru http://forum.bitel.ru/ |
|
Астериск и CRM (CRM) http://forum.bitel.ru/viewtopic.php?f=49&t=12411 |
Страница 1 из 2 |
Автор: | spectrum [ 25 апр 2017, 11:18 ] |
Заголовок сообщения: | Астериск и CRM |
Настраиваю плагин Астериск в CRM. При попытке звонка ничего не происходит, хотя по логам AMIManager подключен. Код: 04-25/06:25:14 INFO [Thread-6] ManagerConnectionImpl - Connecting to XX.XX.XX.XX:5038 04-25/06:25:14 INFO [Asterisk-Java ManagerConnection-13-Reader-0] ManagerConnectionImpl - Connected via Asterisk Call Manager/1.3 04-25/06:25:14 INFO [Thread-6] ManagerConnectionImpl - Successfully logged in 04-25/06:25:14 INFO [Thread-6] ManagerConnectionImpl - Determined Asterisk version: Asterisk 1.6 В логах при звонке ничего нет. Каким образом можно увидеть, что плагин заработал? Должны появляться новые сообщения? Если "занять" номер в сообщениях, то при попытке звонка выпадает ошибка: Код: 04-25/01:41:52 INFO [Asterisk-Java ManagerConnection-1-Reader-1] AMIManager - Call to registred number: 1111111 04-25/01:41:52 ERROR [Asterisk-Java ManagerConnection-1-Reader-1] AMIManager - com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'from' ru.bgcrm.model.BGException: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstr "1111111" - CallerID звонящего. Его и вношу в поле "Занять" Конфигурация: Код: createOnStart=ru.bgcrm.plugin.asterisk.AMIManager,ru.bgcrm.event.listener.MessageTypeCallListener messageType.2.title=Звонки messageType.2.class=ru.bgcrm.dao.message.MessageTypeCall asterisk:amiManager.1.messageTypeId=2 asterisk:amiManager.1.host=XX.XX.XX.XX asterisk:amiManager.1.port=5038 asterisk:amiManager.1.login=crm asterisk:amiManager.1.pswd=14451431 Asterisk v 11.25.1 С версиями 12.8.2, 14.3.0 при звонке вылезает куча ошибок, видимо несовместимость. |
Автор: | zavndw [ 25 апр 2017, 12:38 ] |
Заголовок сообщения: | Re: Астериск и CRM |
должны звонки появляться. Номер занимается оператора который принимает звонки. Версия црм последняя? |
Автор: | spectrum [ 25 апр 2017, 12:43 ] |
Заголовок сообщения: | Re: Астериск и CRM |
zavndw писал(а): должны звонки появляться. Номер занимается оператора который принимает звонки. Как и где определяется этот оператор? А сообщения новые автоматом не создаются? Цитата: Версия црм последняя? Да, последняя. |
Автор: | barguzin2 [ 25 апр 2017, 14:01 ] |
Заголовок сообщения: | Re: Астериск и CRM |
занимать нужно номер, НА который звонят, т.е. номер оператора, который принимает звонки. Проверял на астере версий 11, 13 - всё работает. на 13м да, куча сообщений, но, тем не менее, работает. |
Автор: | spectrum [ 25 апр 2017, 14:16 ] |
Заголовок сообщения: | Re: Астериск и CRM |
Я пробовал занимать номер на который звонят. Ничего не происходит. Вот такой тестовый номер сделал: Цитата: exten => 9000,1,NoOp(Time: ${EXTEN} ${timezone}) exten => 9000,n,Wait(0.25) exten => 9000,n,Answer() exten => 9000,n,Set(FUTURETIME=$[${EPOCH} + 12]) exten => 9000,n,SayUnixTime(${FUTURETIME},Zulu,HNS) exten => 9000,n,SayPhonetic(z) exten => 9000,n,SayUnixTime(${FUTURETIME},${timezone},HNS) В AMI (при просмотре по телнету) все появляется, номер 9000 сделал "Занятым", но ничего не происходит. |
Автор: | zavndw [ 25 апр 2017, 15:15 ] |
Заголовок сообщения: | Re: Астериск и CRM |
А в автостарт црм добавили класс? И перезапустили црм |
Автор: | spectrum [ 25 апр 2017, 15:57 ] |
Заголовок сообщения: | Re: Астериск и CRM |
Я сделал все как здесь описано. Конфиг выше в первом посте. Перезапуск делал. Что-то упустил? zavndw писал(а): А в автостарт црм добавили класс? О каком классе речь и как его добавить в автостарт? |
Автор: | zavndw [ 25 апр 2017, 17:13 ] |
Заголовок сообщения: | Re: Астериск и CRM |
увидел есть все. Если зайти в сообщения там пусто? Цитата: Звонки 402 -> 102 У меня там отображаются и не занятые номера |
Автор: | spectrum [ 25 апр 2017, 17:15 ] | |||
Заголовок сообщения: | Re: Астериск и CRM | |||
Пусто, да.
|
Автор: | spectrum [ 25 апр 2017, 17:22 ] |
Заголовок сообщения: | Re: Астериск и CRM |
Вот лог звонка на AMI: Код: Trying 127.0.0.1...
Connected to localhost. Escape character is '^]'. Asterisk Call Manager/1.3 Action: login Username: crm Secret: 2323413214 Response: Success Message: Authentication accepted Event: Newchannel Privilege: call,all Channel: SIP/200-00000004 ChannelState: 0 ChannelStateDesc: Down CallerIDNum: 111111111 CallerIDName: 200 AccountCode: Exten: 9000 Context: demo Uniqueid: 1493119159.4 Event: Newstate Privilege: call,all Channel: SIP/200-00000004 ChannelState: 4 ChannelStateDesc: Ring CallerIDNum: 111111111 CallerIDName: 200 ConnectedLineNum: ConnectedLineName: Uniqueid: 1493119159.4 Event: Newstate Privilege: call,all Channel: SIP/200-00000004 ChannelState: 6 ChannelStateDesc: Up CallerIDNum: 111111111 CallerIDName: 200 ConnectedLineNum: ConnectedLineName: Uniqueid: 1493119159.4 Event: SoftHangupRequest Privilege: call,all Channel: SIP/200-00000004 Uniqueid: 1493119159.4 Cause: 16 Event: Hangup Privilege: call,all Channel: SIP/200-00000004 Uniqueid: 1493119159.4 CallerIDNum: 111111111 CallerIDName: 200 ConnectedLineNum: <unknown> ConnectedLineName: <unknown> AccountCode: Cause: 0 Cause-txt: Unknown |
Автор: | barguzin2 [ 25 апр 2017, 17:44 ] |
Заголовок сообщения: | Re: Астериск и CRM |
Есть сомнения насчёт работы данного диал-плана + црм. Обычно на входе висит ИВР (не обязательно), дальше звонок идёт на внутренний номер оператора. Вот его нужно занимать и открывается карточка когда начинает звонить этот внутренний. А у вас сразу на входе номер, который сразу отвечает. В этом и сомнение. |
Автор: | spectrum [ 25 апр 2017, 18:53 ] |
Заголовок сообщения: | Re: Астериск и CRM |
Хорошо, попробую настроить какой-нибудь SIP-телефон. Но тут вопрос сразу. Я полагал, что каждый звонок поступает в виде сообщения, которые потом можно разобрать и создать процессы. По хорошему можно вообще сразу процессы по звонкам создавать. Ибо каждый звонок - это обращение абонента и на него надо реагировать. А получается так, что если не "занять" некий номер, то и сообщения не будет никакого? |
Автор: | spectrum [ 08 май 2017, 02:19 ] |
Заголовок сообщения: | Re: Астериск и CRM |
Звонки стали появляться в сообщениях. По номеру договор биллинга автоматически определяется. Но при попытке создания процесса из сообщения вылетает Exception. Хотя при этом процесс создается. Код: 05-07/23:16:24 ERROR [http-bio-9088-exec-3] MessageAction - com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'in_last_id' in 'field list'
ru.bgcrm.model.BGException: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'in_last_id' in 'field list' at ru.bgcrm.dao.message.MessageDAO.updateProcessLastMessageTime(MessageDAO.java:278) at ru.bgcrm.dao.message.MessageDAO.updateMessageProcess(MessageDAO.java:182) at ru.bgcrm.struts.action.MessageAction.messageUpdateProcess(MessageAction.java:180) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at ru.bgcrm.struts.action.BaseAction$Invoker.invoke(BaseAction.java:498) at ru.bgcrm.struts.action.BaseAction.dispatchMethod(BaseAction.java:239) at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170) at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58) at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67) at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51) at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191) at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305) at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191) at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462) at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at ru.bgcrm.servlet.filter.SetRequestParamsFilter.doFilter(SetRequestParamsFilter.java:46) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at ru.bgcrm.servlet.filter.AuthFilter.doFilter(AuthFilter.java:150) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at ru.bgcrm.servlet.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:38) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:298) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'in_last_id' in 'field list' at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:422) at com.mysql.jdbc.Util.handleNewInstance(Util.java:406) at com.mysql.jdbc.Util.getInstance(Util.java:381) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3515) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1951) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2554) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1761) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2046) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1964) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1949) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105) at ru.bgcrm.dao.message.MessageDAO.updateProcessLastMessageTime(MessageDAO.java:271) |
Автор: | Администратор [ 09 май 2017, 01:30 ] |
Заголовок сообщения: | Re: Астериск и CRM |
Как будто не отрабатывают обновления БД. Вы можете выложить лог последнего обновления? Попробуйте загрузить update пакет с FTP ftp://bgcrm.ru/pub/bgcrm/3.0/ вынуть из него patch.sql, применить вручную к вашей БД BGCRM. |
Автор: | spectrum [ 10 май 2017, 01:46 ] |
Заголовок сообщения: | Re: Астериск и CRM |
Дело в том , что и на предыдущей версии была та же ошибка. Я сделал update, она не пропала. Лог: Код: Update starting.. Update from ftp://ftp.bgcrm.ru/pub/bgcrm Version is 3.0 Set passive mode.. Changing dir to /pub/bgcrm/3.0 Checking update for 'update'.. Found update for 'update' build 1183 updating to build 1185 Checking update for 'update_lib'.. Downloading update_3.0_1185.zip OK! Start installing.. Executing call ExecuteSQL; param: patch.sql Executing database update...OK Result => true Executing call RemoveFile; param: action/pl_bgbilling.xml Result => true Executing call RemoveFile; param: action/pl_document.xml Result => true Executing call RemoveFile; param: action/pl_ufanet.xml Result => true Executing call RemoveFile; param: action/pl_report.xml Result => true Executing call RemoveFile; param: plugin/documentCirculation.xml Result => true Executing call RemoveFile; param: plugin/raiting.xml Result => true Execute calls => OK File doesn't changed webapps/WEB-INF/jspf/process_color.jsp File's copy finished... File copy => OK Module update was successfull installed! Please, restart BGCRM server. REPLACED FILES: lib/app/bgcrm.jar webapps/WEB-INF/jspf/select_interface.jsp webapps/WEB-INF/jspf/table_row_edit_mode.jsp webapps/WEB-INF/jspf/user/plugin/document/template/example/process_docx.jsp webapps/WEB-INF/jspf/user/process/process/process_link_table.jsp webapps/js/crm.js Судя по логу SQL нормально пропатчился без ошибок? |
Автор: | Администратор [ 10 май 2017, 14:26 ] |
Заголовок сообщения: | Re: Астериск и CRM |
Ошибок обновления не вижу.. Попробуйте под пользователем BGCRM выполнить запрос: CALL add_column_if_not_exists('process_message_state', 'in_last_id', 'INT NOT NULL, ADD out_last_id INT NOT NULL'); Запустите ./installer.sh без параметров, там есть подсказка. Попробуйте перед следующим обновлением почистить кэш выполненных запросов. |
Автор: | spectrum [ 11 май 2017, 19:29 ] |
Заголовок сообщения: | Re: Астериск и CRM |
А каким образом сделать этот запрос? Как получить доступ к указанной процедуре? Если запустить под пользователем crm в mysql, то выдает. Судя по всему процедуры нет. ERROR 1305 (42000): PROCEDURE bgcrm.add_column_if_not_exists does not exist |
Автор: | spectrum [ 11 май 2017, 19:50 ] |
Заголовок сообщения: | Re: Астериск и CRM |
Вытащил эту процедуру и sql-скрипта. При запуске выдает: MariaDB [bgcrm]> CALL add_column_if_not_exists('process_message_state', 'in_last_id', 'INT NOT NULL, ADD out_last_id INT NOT NULL'); ERROR 1461 (42000): Can't create more than max_prepared_stmt_count statements (current value: 16382) Это нужно глобально увеличивать "max_prepared_stmt_count"? |
Автор: | Администратор [ 12 май 2017, 00:34 ] |
Заголовок сообщения: | Re: Астериск и CRM |
https://www.google.com/search?q=+Can't+ ... statements Из результатов: https://iammysql.wordpress.com/2012/05/ ... tatements/ http://stackoverflow.com/questions/1384 ... stmt-count Увеличить можно так: Код: set global max_prepared_stmt_count=<some_larger number>; Но я бы рекомендовал также включить лог и посмотреть, что за стейтменты там не закрыты: Код: set global general_log = 'ON'; На этой базе только BGCRM, либо что-то ещё работает? |
Автор: | Phricker [ 12 май 2017, 00:36 ] |
Заголовок сообщения: | Re: Астериск и CRM |
А некоторые советуют просто отключать кеширование |
Автор: | spectrum [ 12 май 2017, 03:42 ] |
Заголовок сообщения: | Re: Астериск и CRM |
Администратор писал(а): Увеличить можно так: Код: set global max_prepared_stmt_count=<some_larger number>; Но я бы рекомендовал также включить лог и посмотреть, что за стейтменты там не закрыты: Код: set global general_log = 'ON'; На этой базе только BGCRM, либо что-то ещё работает? Как увеличить-то я понимаю, но даст ли это толк, не вырастет до новых пиковых значений? Кроме CRM на этом же сервере крутится BGBilling со своей базой. Phricker писал(а): А некоторые советуют просто отключать кеширование Судя по графикам увеличение не поможет. Тогда может действительно отключать кэш? |
Автор: | spectrum [ 12 май 2017, 09:58 ] |
Заголовок сообщения: | Re: Астериск и CRM |
Ночью остановил bgserver. Сразу "Prepared_stmt_count" сбросилось в 0. ТАк что пробелма не в CRM. После этого запустил процедуру add_column_if_not_exists. Все прошло без ошибок. Далее killhash и установка апдейта. Exception пропал. Что напрягло. При установке апдейта была ошибка: Код: OK (84 ms.) => ALTER TABLE param_list CHANGE value value INT NOT NULL ERROR (1091) Can't DROP 'PRIMARY'; check that column/key exists => ALTER TABLE param_address DROP PRIMARY KEY ERROR (1061) Duplicate key name 'id_param' => ALTER TABLE param_address ADD KEY id_param(id, param_id) OK (2 ms.) => CALL add_column_if_not_exists('param_address', 'n', 'INT NOT NULL AFTER param_id') Что это? |
Автор: | Администратор [ 12 май 2017, 12:22 ] |
Заголовок сообщения: | Re: Астериск и CRM |
Это некритично. Некоторые старые выражения для изменения структуры написаны не хранимыми процедурами, а просто ALTER ами. Если индекс или поле уже есть - выкидывается ошибка. При следующем обновлении ошибок уже не будет, т.к. выполненные запросы сохранились в кэш. |
Автор: | Администратор [ 12 май 2017, 12:24 ] |
Заголовок сообщения: | Re: Астериск и CRM |
Попробуйте включить лог, пожалуйста, и выловить не закрывающиеся Prepared Statements. Если получится - отпишите в ветку по биллингу. Надо бы их исправить. |
Автор: | spectrum [ 12 май 2017, 22:25 ] |
Заголовок сообщения: | Re: Астериск и CRM |
Хорошо, сделаю. Но у меня еще вопрос по поводу Asterisk-плагина. Можно ли сделать так, чтобы в сообщения попадали все звонки, а не только те, что "займет" оператор? |
Автор: | Администратор [ 13 май 2017, 18:16 ] |
Заголовок сообщения: | Re: Астериск и CRM |
Думаю, там необходима фильтрация хотя бы по номеру принимающему. Как-то распознавать входящие звонки. |
Автор: | spectrum [ 14 май 2017, 02:03 ] |
Заголовок сообщения: | Re: Астериск и CRM |
Ну вот у нас есть много разных входящих линий в зависимости от услуги и рекламной компании. Нужно принимать их все. И по каждому звонку генерировать процесс. А тут, получается, не совсем логичная привязка к оператору. А если автоответчик стоит, например? А если оператор забыл привязать номер, то звонок потерян? Также вообще никак не фиксируются неотвеченные вызовы, а они, ведь, тоже важны. |
Автор: | Администратор [ 14 май 2017, 02:23 ] |
Заголовок сообщения: | Re: Астериск и CRM |
Можно отфильтровывать вызовы по принимающему номеру. Иначе не получится даже определить, какие сообщения входящие. |
Автор: | Администратор [ 14 май 2017, 02:28 ] |
Заголовок сообщения: | Re: Астериск и CRM |
Занятие номеров используется в данный момент для определения, какой пользователь BGCRM принял вызов. |
Автор: | spectrum [ 14 май 2017, 03:31 ] |
Заголовок сообщения: | Re: Астериск и CRM |
Администратор писал(а): Можно отфильтровывать вызовы по принимающему номеру. Иначе не получится даже определить, какие сообщения входящие. Каким образом это сделать? Не нашел в документации фильтрации. |
Страница 1 из 2 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |