2012-11-07 55 views
2

我有一个USSD的应用程序,为用户提供了一个交互式会话,例如:SMSLib例如交互式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 ... 

我想通过使用SMSLib来模拟用户测试USSD服务器。

是否有任何示例SMSLib代码片段显示如何与USSD服务器执行交互式USSD会话?

+0

还有另外一个问题。我忘了在拨USSD简码后,USSD服务器做了一次USSD推回给用户,并且用户会话的其余部分继续。 –

+0

如何做ussd会话? –

回答

2

在此link的代码给出了发送和接收使用smslib USSD数据的一个示例:

// 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(); 
       } 
     } 
} 
+0

它看起来像这个代码不再适用于最新的调制解调器API。至少,我看到只发送消息并在那里发送命令。 –