我有来自移动运营商的网关,我可以成功连接到它,并且当他拨打由提供商提供的usdd代码时,我可以在用户的屏幕上显示一条消息。但是,当用户在usdd对话框中输入某些内容来回复我们时,我将无法阅读并使用新的对话窗口进行回复,具体取决于用户对我们的回复。我正在使用twitter cloudhopper lib。我想知道我的代码错过了什么才能能够同步接收来自用户的消息或在需要时向他们发送回复。我现在拥有这个github存储库中所有的代码,当然还有网关信息,除了:https : //github.com/NigarMovsumova/ussd-over-smpp/tree/master/ussd-over-smpp
这是运行smpp-demo应用程序并从电话屏幕拨打usdd代码时得到的结果:我只删除了要拨打的号码和ussd代码本身。 点击查看图片
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您的描述,您正在尝试通过SMPP协议实现USSD(Unstructured Supplementary Service Data)交互,即允许用户通过移动网络进行会话式交互。您使用了GitHub上的一个示例项目,并且能够成功发起请求并显示消息给用户,但在处理用户的回复时遇到了问题。
这里有几个可能的原因和解决方向:
监听机制:确保您的代码中不仅实现了发送USSD请求的功能,还正确实现了接收和处理用户响应的逻辑。在SMPP协议中,这通常涉及到监听deliver_sm
PDUs(Protocol Data Units),这些是用于从SMSC(Short Message Service Center)接收消息的数据包。请检查您的代码是否正确设置了对这些响应的监听,并且有相应的处理逻辑。
Session Management:USSD交互通常需要维护一个会话状态,因为它是双向连续的对话。确保您的应用程序能够维护这个会话,以便于识别并关联用户的回复与之前的会话上下文。这可能涉及到存储会话ID或序列号等信息。
正确的绑定和配置:确认您的SMPP客户端正确地绑定了到SMSC,并且配置了所有必要的参数,比如系统类型、接口版本、地址范围等。错误的绑定设置可能导致无法接收响应。
Error Handling:检查是否有错误处理逻辑遗漏了重要的错误信息。有时,即使连接成功,也可能因为权限设置、路由问题或格式错误等原因导致消息收发不畅。
库的兼容性和更新:确保您使用的twitter cloudhopper lib
版本与您的需求兼容,并且是最新的或者至少是稳定且广泛测试过的版本。有时候,库的旧版本可能存在已知的问题或缺少某些功能。
日志分析:仔细查看应用运行时的日志输出,特别是当尝试接收用户回复时的日志。这可能会提供关于为何没有收到回复的线索,比如错误码、异常信息等。
与运营商沟通:如果上述技术排查均未发现问题,建议与您的移动运营商联系,确认他们支持的USSD交互方式以及是否有特定的配置要求或限制。有时,问题可能出在运营商端的配置或网络设置上。
综上所述,重点在于检查和优化您的代码中的消息接收逻辑、会话管理、配置细节以及错误处理,同时考虑库的适用性和最新性。如果问题依旧,与服务提供商的直接沟通也是解决问题的关键步骤之一。