6

描述:

  • 我们正在使用部署在 SOA 服务器上的 sdpmessagingdriver-smpp 驱动程序来发送 SMS 消息。
  • 我们已经使用“发件人地址”和“默认发件人地址”配置了 SMPP 驱动程序属性。
  • 当我们尝试发送 SMS 时,它会失败并显示错误消息“Invalid Source Address”。

经过一番调查,我们发现 submit_sm 请求中的 Sender Address 为空,这导致了问题"Invalid Source Address"。现在出现的问题是,为什么在 SMPP 驱动程序配置设置中已经配置了发送者地址在提交请求中是空白的?我们是否需要在其他地方配置发件人地址?是否有任何配置文件来配置此设置?

参考截图:

SMPP 驱动程序特定配置:

  • 您可以看到配置中提供了发件人地址默认发件人地址

在此处输入图像描述

消息状态(短信失败日志):

  • 下面提供的屏幕截图显示了发件人地址为空白的失败 SMS 消息。

在此处输入图像描述

后端错误日志:

[2017-10-17T10:33:16.806+05:30] [WLS_SOA] [错误] [SDP-25700] [oracle.sdp.messaging.driver.smpp] [tid: Workmanager: , Version: 0, Scheduled=false , Started=false, Wait time: 0 ms\n] [userId: OracleSystemUser] [ecid: 49d20b62a8084325:-5336381e:15f247fea2f:-8000-000000000001c322,0] [APP: usermessagingdriver-smpp] 捕获到意外异常。 [[ oracle.sdp.messaging.driver.DriverException:在 oracle.sdpinternal.messaging.driver.smpp.SMPPDriver.send(SMPPDriver.java:1073) 的 oracle.sdpinternal.messaging.driver.smpp.SMPPDriver 的源地址 [a] 无效。在 oracle.sdpinternal.messaging.driver.smpp.SMPPDriver.send (SMPPDriver.java:2724) 在 oracle.sdpinternal.messaging.driver.smpp.SMPPDriver.send(SMPPDriver.java:2849) 发送(SMPPDriver.java:3268)在 oracle.sdpinternal.messaging.driver.smpp.SMPPManagedConnection。在 oracle.sdpinternal.messaging.dispatcher.DriverDispatcherBean.onMessage(DriverDispatcherBean.java:296) 在 sun.reflect 的 oracle.sdpinternal.messaging.driver.DriverConnectionImpl.send(DriverConnectionImpl.java:41) 发送(SMPPManagedConnection.java:95) .GeneratedMethodAccessor1629.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at com.bea.core.repackaged.springframework .aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310) 在 com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) 在 com.bea.core.repackaged.springframework .aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) 在 com。bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89) 在 com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) 在 com. bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131) 在 com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119) 在 com。 bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) 在 com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) 在 com。 sun.proxy.$Proxy532。onMessage(Unknown Source) at oracle.sdpinternal.messaging.dispatcher.DriverDispatcherBean_xfokw2_MDOImpl.__WL_invoke(Unknown Source) at weblogic.ejb.container.internal.MDOMethodInvoker.invoke(MDOMethodInvoker.java:35) at oracle.sdpinternal.messaging.dispatcher.DriverDispatcherBean_xfokw2_MDOI .onMessage(Unknown Source) at oracle.sdpinternal.messaging.jmsmessagereceiver.ResourceAdapterImpl$RaMessageListener.onMessage(ResourceAdapterImpl.java:167) 在 oracle.sdpinternal.messaging.jms.QueueWorker.run(QueueWorker.java:73) 在 weblogic.work .j2ee.J2EEWorkManager$WorkWithListener.run(J2EEWorkManager.java:184) 在 weblogic.work.DaemonWorkThread.run(DaemonWorkThread.java:30) ]] [2017-10-17T10:33:16.807+05:30] [WLS_SOA] [通知] [SDP-26003] [oracle.sdp.messaging.driver.dispatcher] [tid: Workmanager: , 版本: 0,Scheduled=false, Started=false, Wait time: 0 ms\n] [userId: OracleSystemUser] [ecid: 49d20b62a8084325:-5336381e:15f247fea2f:-8000-000000000001c322,0] [APP: usermessagingdriver-smpp] Dispatcher 发送的消息带有 id :eb50c4cdc0a800ab12d5fbbdbbbbd46a。

4

1 回答 1

2

我们发现并解决了这个问题。在此处发布其决议。也许它可以帮助别人并节省他们宝贵的时间。

在 Oracle EM 控制台中配置的 SMPP 驱动程序存在一个错误,原因是源地址和默认源地址始终为空,即使您从驱动程序配置中传递它也是如此。

这是由于 SMSC 有多个源地址,我们的系统在源地址字段中传递了空值。由于这个 SMSC 无法识别正确的源地址并抛出“无效源地址”异常。

如果在 SMSC 中配置了单一/静态源地址,则您可以传递空值,SMSC 将自动识别源地址。

于 2017-10-30T10:36:26.840 回答