Пример SMSLib для интерактивного сеанса USSD

У меня есть USSD-приложение, которое обеспечивает интерактивный сеанс для пользователей, например:

User> Dial USSD Shortcode
Serv> Return Main Menu
User> Select Option 1, e.g. "View Movie Times"
Serv> Return List of Cities
User> Select Option 3, e.g. Mumbai
Serv> Return List of Cinemas
User> etc ...

Я хотел бы протестировать сервер USSD, используя SMSLib для имитации пользователя.

Существуют ли какие-либо примеры фрагментов кода SMSLib, которые показывают, как выполнять интерактивный сеанс USSD с сервером USSD?


person Chris Snow    schedule 07.11.2012    source источник
comment
Есть еще одна проблема. Я забыл, что после набора короткого кода USSD сервер USSD отправляет обратно пользователю USSD, и остальная часть сеанса пользователя продолжается с этого.   -  person Chris Snow    schedule 10.11.2012
comment
как сделать ussd сессии?   -  person Huzoor Bux    schedule 11.02.2013


Ответы (1)


Код по этой ссылке дает пример отправки и получения USSD данных с помощью smslib:

// SendUSSD.java - Sample application.
//
// This application shows you the basic procedure for sending messages.
// You will find how to send synchronous and asynchronous messages.
//
// For asynchronous dispatch, the example application sets a callback
// notification, to see what's happened with messages.

package examples.modem;

import org.smslib.AGateway;
import org.smslib.AGateway.Protocols;
import org.smslib.IUSSDNotification;
import org.smslib.Library;
import org.smslib.Service;
import org.smslib.USSDResponse;
import org.smslib.modem.SerialModemGateway;

public class SendUSSD
{
        public void doIt() throws Exception
        {
                Service srv;
      USSDNotification ussdNotification = new USSDNotification();
                System.out.println("Example: Send USSD Command from a serial gsm modem.");
                System.out.println(Library.getLibraryDescription());
                System.out.println("Version: " + Library.getLibraryVersion());
                srv = new Service();
                SerialModemGateway gateway = new SerialModemGateway("modem.com1", "COM4", 19200, "Huawei", "E220");
                gateway.setProtocol(Protocols.PDU);
      gateway.setInbound(true);
                gateway.setOutbound(true);
                gateway.setSimPin("0000");
      srv.setUSSDNotification(ussdNotification);
                srv.addGateway(gateway);
                srv.startService();
                System.out.println();
                System.out.println("Modem Information:");
                System.out.println("  Manufacturer: " + gateway.getManufacturer());
                System.out.println("  Model: " + gateway.getModel());
                System.out.println("  Serial No: " + gateway.getSerialNo());
                System.out.println("  SIM IMSI: " + gateway.getImsi());
                System.out.println("  Signal Level: " + gateway.getSignalLevel() + "%");
                System.out.println("  Battery Level: " + gateway.getBatteryLevel() + "%");
                System.out.println();

      String resp = gateway.sendUSSDCommand("*888#"); // not working
//      String resp = gateway.sendCustomATCommand("AT+CUSD=1,\"*888#\",15\r"); // working
      System.out.println(resp);

      System.out.println("Now Sleeping - Hit <enter> to terminate.");
                System.in.read();
                srv.stopService();
        }

   public class USSDNotification implements IUSSDNotification
   {
      public void process(AGateway gateway, USSDResponse response) {
                        System.out.println("USSD handler called from Gateway: " + gateway.getGatewayId());
                        System.out.println(response);
      }
   }

        public static void main(String args[])
        {
                SendUSSD app = new SendUSSD();
                try
                {
                        app.doIt();
                }
                catch (Exception e)
                {
                        e.printStackTrace();
                }
        }
}
person Chris Snow    schedule 09.11.2012
comment
похоже, что этот код больше не работает в новейшем API модема. По крайней мере, я вижу там только методы отправки сообщений и отправки команд. - person Ilya Yevlampiev; 23.06.2013