BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 28 мар 2024, 21:03

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
СообщениеДобавлено: 12 мар 2014, 22:46 
Не в сети

Зарегистрирован: 07 апр 2010, 03:56
Сообщения: 29
Карма: 0
Проблема следующая, клиенты, которые будут покупать карты оплаты услуг модуля VoiceIP не имеют возможности выходить в интернет, есть задача сделать активацию карт автоматом, либо через ivr.

варианта 2.
1. астериском отправлять запрос эмулирующий отправку формы регистрации, но есть проблема с капчей и есть параметр GUID какой-то.
Код:
 /bgbilling/pubexecuter?action=CreateContract&module=card&mid=8 HTTP/1.1" module=card&accept=1&activate=1&GUID2912225174153344_submit=&tariff=12&action=CreateContract&param_0=123&captcha=km8abn&pswd=92492&login=2&mid=8&pswd2=92492&activateType=1&

Наскриптовать можно подстановку сюда пароля и логина из карты, но как отключить капчу вообще?

2. Активировать через IVR, звонили в Бител, нам сказали что можно, при пополнении договора картой первый раз типо он создается, но в самих скриптах обнаружили, что алгоритм таков: идет поиск договора если его нет то ошибка и цикл опять. И опять же в документации про IVR говориться только про пополнение и просмотр баланса.
Код:
<assign name="contract_id" expr="find_contract.contract_id"/>
<if cond="contract_id &gt; '0'">
<goto next="#contractActionDo"/>
<else/>
<prompt bargein="true"><audio src="prompts/contract_not_found.au"/></prompt>
<goto next="#contractProcess"/>
</if>

Соотвественно вопрос можно ли через IVR сформировать запрос, который будет создавать договор?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 мар 2014, 02:06 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
когда загружаются карты в биллинг, для карты задается для чего может быть использована карта
для пополнения баланса или для создания и пополнения созданого договора

алгоритм такой
при авторизации вводиться логин и пароль с карты в виде пинкода
этот пин ищется среди существующих договоров, а затем если для задан код карточного модуля в конфиге, если среди карт находится карта с нужным пином и карта имеет тип создания договора, то создается новый договор на него заносится сумма с карты и логин с паролем, а затем происходит авторизация по новому договору

ивр ни чего не знает про создание договоров.....


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 мар 2014, 01:24 
Не в сети

Зарегистрирован: 07 апр 2010, 03:56
Сообщения: 29
Карма: 0
Ок, спасибо.

Ну мы попробовали тестовые ИВР скрипты для циски, хотим построить решение на базе ИВР системы астериска, суть одна же, но скрипты эти не заработали, пытаемся сами написать сгенерировав нужный запрос исходя из примера.

Никак не можем реализовать поиск карты\договора с автоматическим созданием договора при наличии карты, запрос получился такой.
/bgbilling/pubexecuter?action=IVRFindContract&module=card&mid=4&contract_id=100212919&contract_type=1&content_type=stream
карта 1002 пин 12919 в модуле кард прописано ivr.card.size.9.login.length=4

Возвращает ошибку <vxml version="2.0"><form id="find_contract"><block><var expr="'0'" name="contract_id"/><return namelist="contract_id"/></block></form></vxml>
какой бы договор не указали.

Так же вопрос, есть ли где документация по всем параметрам и требованиям action=IVRFindContract и прочих?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 мар 2014, 11:15 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
Код:
/bgbilling/pubexecuter?action=IVRFindContract&module=card&mid=4&contract_id=100212919&contract_type=1&content_type=stream


а что вы этим запросом хотите добиться?

Код:
package bitel.billing.server.card.action.pub;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.w3c.dom.Element;

import ru.bitel.bgbilling.common.BGException;
import ru.bitel.common.Utils;
import ru.bitel.common.XMLUtils;
import bsh.Interpreter;

public class ActionIVRFindContract
    extends ActionIVRBase
{
    @Override
   public void doAction()
       throws SQLException, BGException
   {
        String phoneNum = request.getParameter( "phone_num" );
        String contractType = request.getParameter( "contract_type" );
       
        Element block = getBlockElement();
       
        Element var = XMLUtils.newElement( block, "var" );
        var.setAttribute( "name", "contract_id" );
       
        int cid = 0;
       
        String pswd = null;
        if( phoneNum != null )
        {
           int pos = phoneNum.indexOf( '.' );
           if( pos > 0 )
           {
              pswd = phoneNum.substring( pos + 1 );
              phoneNum = phoneNum.substring( 0, pos );              
           }
        }
       
        if( moduleSetup != null )
        {
            String pref = "ivr.contract.type." + contractType;
           
            String prefix = moduleSetup.get( pref + ".pref", null );           
            String prepare = moduleSetup.get( pref + ".prepare", null );
            if( Utils.notBlankString( prepare ) )
            {
                try
                {
                    Interpreter it = new Interpreter();
                    it.set( "phone", phoneNum );
                    phoneNum = (String)it.eval( prepare );                   
                }
                catch (Exception e)
                {
                    log.error( e.getMessage(), e );
                }
            }           
           
            if( prefix != null )
            {
               phoneNum = prefix + phoneNum;
               
                String query =  "SELECT id FROM contract WHERE title=?";
                if( Utils.notBlankString( pswd ) )
                {
                   query += " AND pswd=? ";
                }
                query += " LIMIT 1";
                PreparedStatement psFind = con.prepareStatement( query );
               
                psFind.setString( 1, phoneNum );
                if( Utils.notBlankString( pswd ) )
                {
                   psFind.setString( 2, pswd );
                }
               
                ResultSet rs = psFind.executeQuery();
                if( rs.next() )
                {
                    cid = rs.getInt( 1 );
                }
            }
        }
       
        var.setAttribute( "expr", "'" + cid +  "'" );
       
        Element returnEl = createElement( block, "return" );
        returnEl.setAttribute( "namelist", "contract_id" );       
               
        sendResponse( block.getOwnerDocument() );               
    }
}


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 мар 2014, 22:16 
Не в сети

Зарегистрирован: 07 апр 2010, 03:56
Сообщения: 29
Карма: 0
Как и писал выше, мы хотим добиться активации карты без использования веба.

Цитата:
алгоритм такой
при авторизации вводиться логин и пароль с карты в виде пинкода
этот пин ищется среди существующих договоров, а затем если для задан код карточного модуля в конфиге, если среди карт находится карта с нужным пином и карта имеет тип создания договора, то создается новый договор на него заносится сумма с карты и логин с паролем, а затем происходит авторизация по новому договору

Вот именно этого.

Вопрос в том как эти данные присылать http запросом либо радиус запросом с наса.. к сожалению так и не получается ничего.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 мар 2014, 01:16 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
да не надо ничего специально присылать, при правильной настройке, при первой попытке позвонить по карте, договор будет создан АВТОМАТИЧЕСКИ, а то что вы пытаетесь сделать запросом это дополнительная возможность пополнения баланса СУЩЕСТВУЮЩЕГО договора через IVR с помощью карты.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 мар 2014, 21:14 
Не в сети

Зарегистрирован: 07 апр 2010, 03:56
Сообщения: 29
Карма: 0
ОК.
Ну вот у нас в модуле телефонии прописано:
card.module.id=8
ivr.card.size.9.login.length=4

В насе:
card.activate.service=0

В модуле кард (8)
Услуга пополнения\Услуга активации у серии есть.
Карта
1002 пароль 12919

С наса пытаемся прислать через
User-Name=100212919 - Логин и карта не найдены

User-Name=1002
User-Password=12919 - Тоже самое.

Не подскажете, может что не так сделали?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 мар 2014, 00:42 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
http://bgbilling.ru/v6.0/doc/ch31s09.html
http://bgbilling.ru/v6.0/doc/ch14s14.html
При следующем звонке RADIUS-сервер должен найти этот логин, для этого в режимах поиска должен присутствовать метод User-Name=LOGIN.
http://bgbilling.ru/v6.0/doc/ch31s04.html


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28 мар 2014, 00:35 
Не в сети

Зарегистрирован: 07 апр 2010, 03:56
Сообщения: 29
Карма: 0
Извините уж за назойливость, но перечитал документацию с десяток раз наверно, все ровно пишет ошибку логин и карта не найдены. Через веб-же активировать карты из данной серии получается, договор создается.

Итак с НАСА приходит запрос
User-Name=1002
User-Password=12919

В модуле карт есть карта 1002 с пином 12919, у серии карт указана услуга из модуля Карты активации и пополнения картой. Карта у дилера и в ПРОДАЖЕ.

В конфиге модуля Voice и в конфиге наса(на всякий случай) прописано
card.activate.service=0
card.module.id=8

Режим поиска
findmode.0.title=Поиск по User-Name=LOGIN
findmode.0.value=User-Name=LOGIN
findmode.1.title=Поиск по User-Name=ALIAS
findmode.1.value=User-Name=ALIAS
findmode.2.title=Поиск по Calling-Station-Id=ALIAS
findmode.2.value=Calling-Station-Id=ALIAS

find.order=0,1,2

Установлен.

Помогите, пожалуйста.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28 мар 2014, 02:10 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
покажите скрин окошка с картой 1002


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28 мар 2014, 02:48 
Не в сети

Зарегистрирован: 07 апр 2010, 03:56
Сообщения: 29
Карма: 0
Пожалуйста


Вложения:
bill.jpg
bill.jpg [ 272.03 КБ | Просмотров: 8169 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30 мар 2014, 19:18 
Не в сети

Зарегистрирован: 07 апр 2010, 03:56
Сообщения: 29
Карма: 0
На скрине все верно?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 апр 2014, 20:38 
Не в сети

Зарегистрирован: 07 апр 2010, 03:56
Сообщения: 29
Карма: 0
Так каким образом можно решить проблему нашу?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 апр 2014, 00:56 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
обращались в хелпдеск?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.105s | 48 Queries | GZIP : On ]