如何创建交互式USSD菜单?

时间:2015-01-04 08:56:15

标签: java protocols ussd telecommunication ss7

我目前正在使用 map-api-2.1.0.jar map-impl-2.1.0.jar 来处理来自手机的USSD字符串。这工作正常,用户正在收到USSD响应。

MapHandling Class

public class MapHandling implements     MAPDialogListener,MAPServiceSmsListener,MAPServiceMobilityListener,MAPServiceCallHandlingListener,MAPSer    viceSupplementaryListener{
     @Override
     public void onProcessUnstructuredSSRequest(ProcessUnstructuredSSRequest procUnstrReqInd)
     {
      try
      {
        logger.debug("dialogId: " +procUnstrReqInd.getMAPDialog().getLocalDialogId() + " USSD String:"+procUnstrReqInd.getUSSDString()+"MSISDN:"+procUnstrReqInd.getMAPDialog().getReceivedDestReference().getAddress());
      } catch (Exception exp)
      {
      logger.error("USSD - error while loging ussd data ", exp);
      }
      ss7.request.UnstructuredSSRequest ussdRequest = new  ss7.request.UnstructuredSSRequest(procUnstrReqInd);
      Thread thr = new Thread(ussdRequest);
     thr.start();
 }

}

ss7.request.UnstructuredSSRequest Class

   public class UnstructuredSSRequest extends SS7Operation implements Runnable {
       ProcessUnstructuredSSRequest procUnstrReqInd;
              public UnstructuredSSRequest(ProcessUnstructuredSSRequest procUnstrReqInd) {
          this.procUnstrReqInd = procUnstrReqInd;
       }
           @Override
          public void run() {
        logger.debug("[" + refId + "] Sending USSD response");
        sendUSSDResponse(validRequest);
       }
       private void sendUSSDResponse(boolean validRequest) {
        MAPDialogSupplementary dialog = procUnstrReqInd.getMAPDialog();
        USSDString ussdStrObj = MapProvider.getMAPParameterFactory().createUSSDString("Thank you for using CC service!");
        dialog.addProcessUnstructuredSSResponse(procUnstrReqInd.getInvokeId(),procUnstrReqInd.getDataCodingScheme(), ussdStrObj);
        dialog.close(false);
        dialog.release();
     }
    }

以上代码运行正常,我收到“感谢您使用CC服务!”我从手机拨打USSD时的响应。 我想将其更改为交互式USSD处理程序,我想在用户拨打USSD代码时从用户那里获取输入,而不是向他发送响应并关闭会话。 请帮助我如何为用户维护会话并接受他的意见。

1 个答案:

答案 0 :(得分:1)

我相信您正在使用Mobicents jSS7项目,上面的代码是服务器端通过SIGTRAN或E1连接到HLR / MSC。

如果是,您可以在https://code.google.com/p/jss7/source/browse/map/load/src/main/java/org/mobicents/protocols/ss7/map/load/Server.java

查看服务器端的示例代码