跳转至
For the complete DHIS2 documentation index, see llms.txt.

使用网关进行SMS报告

DHIS2 支持通过 SMS 接受数据,但 SMS 需要压缩。DHIS2 Android 应用项目是通过 SMS 发送信息的透明层,用户无需担心编写 SMS 的问题。要使用 Android 应用项目发送短信,需要正确配置短信网关。本节将解释不同的可用选项和实现方法。

发送短信{ #sms_report_sending }

首先要说明的是,本节主要涉及**接收短信**(从移动设备到 DHIS2 服务器)的设置,这在考虑使用应用项目通过短信将应用项目中记录的信息发送(同步)到 DHIS2 服务器时是必要的。在应用项目中,可在*设置* > *短信设置*下进行设置。

将SMS(即从DHIS2服务器发送到移动设备)的设置相对简单。如果仅需要在发生某些事件(消息,阈值等)时从DHIS2向用户电话发送通知,则仅需要发送SMS。

所有这些都可以在[移动配置部分](https://docs.dhis2.org/master/en/user/html/mobile_sms_service.html)的SMS服务配置页面中进行配置。

常见的提供商(例如*批量SMS Clickatell *)具有开箱即用的支持,并且两个提供商都支持将SMS发送到大多数国家/地区的号码。

另请注意,可以使用其他SMS网关来发送和接收SMS。因此,即使您在下面设置了用于接收SMS的解决方案,仍然可以使用上述上述解决方案之一来发送SMS。

使用Android设备作为SMS网关

到目前为止,最简单的解决方案是使用专用的Android设备作为SMS网关。任何运行Android OS(4.4,Kitkat或更高版本)的手机或平板电脑都可以。为了将消息转发到您的DHIS2服务器,它将需要持续的Internet连接,并且还需要SIM卡来接收传入的SMS。

您需要在移动设备上下载并安装DHIS2 Android SMS网关应用程序。请参阅[版本](https://github.com/dhis2/dhis2-sms-android-gateway/releases)列表,您可以在其中下载最新的APK文件进行安装。应用页面本身上有说明,但实际上,您只需要启动应用并输入DHIS2服务器的详细信息(URL,用户名和密码)即可。

设置并运行该网关后,您可以使用DHIS2 Capture App在任何其他移动设备的配置页面中输入此网关设备的电话号码。然后,当从这些报告设备发送SMS时,它们将在网关设备上接收并自动转发到DHIS2服务器,在该服务器上对其进行处理。

使用这种网关设备非常适合测试短信功能,但不应在生产中使用,因为它存在一些缺陷,如无法处理多部分短信、处理并发短信,甚至可能被 Android 操作系统杀死。 因此,在考虑将项目转入生产阶段时,有必要研究以下更持久、更可靠的网关解决方案。

使用Android设备网关发送短信

当前不支持也不记录此选项。

专用短信网关

本节讨论更永久和专用的SMS网关的使用以及可用的选项。下面的每个选项都将涉及一个提供商(或您自己)与国家/地区的电话运营商建立SMPP连接,并使用此连接来接收传入的SMS并使用HTTP通过Internet将其转发到您的DHIS2服务器。

这些解决方案可以使用**长号**或**短代码**。长号是大多数人使用的标准移动电话号码,即+61400123123。短代码只是短号,例如311。短代码通常会花费更多的时间来设置和维护。

确保输入到DHIS2服务器的SMS格式正确

通过API将传入的SMS发送到DHIS2服务器时,请使用以下URL:* https:// / api / sms / inbound *

在DHIS2版本2.34及更低版本中,此终结点要求入站SMS的格式必须具有非常特定的格式,即消息本身必须是一个名为text的参数,发件人的电话号码必须是一个名为originator的参数。

使用以下所有SMS网关选项时,将它们配置为将传入的SMS转发到另一个Web服务时,它们将各自具有自己的格式,该格式与DHIS2 API期望的格式不同。因此,有必要重新格式化它们,然后再将它们发送到DHIS2服务器。

一种选择是运行您自己的非常简单的Web服务,该服务仅接收来自网关提供商的传入SMS,将其重新格式化为DHIS2所需的格式,然后将其转发到DHIS2 API。此类服务需要由软件开发人员编写。

在DHIS2版本2.35中,计划使用传入SMS的模板系统来支持这些情况,因此您可以指定将从提供商处发送的消息的格式。这样,您可以将DHIS2服务器配置为接受来自任何其他SMS网关提供者的传入SMS,并且它们可以直接将传入SMS发送到DHIS2 API,而无需这种格式的Web服务。

使用RapidPro

[RapidPro](https://rapidpro.io/)是联合国儿童基金会在全球50多个国家/地区提供的服务。它是一套软件,可以与国内电话运营商合作,使组织能够为其项目设计SMS解决方案,例如SMS报告或宣传活动。

RapidPro服务将包括通常通过短码与国内一个或多个电话运营商的SMPP连接,这可能专用于NGO的卫生工作。然后可以添加一个Webhook,以便将传入的SMS转发到另一个Web服务,例如上述的格式化Web服务。如果该短代码也用于其他目的,则可能有必要将报告设备的电话号码添加到单独的组中,以便仅将来自那些设备的传入SMS转发到Webhook。

RapidPro目前在大约一半正在使用或试用DHIS2的国家/地区中建立和运行。在考虑下面的一种解决方案(可能在财务和时间上都可能会付出高昂的代价)之前,值得与Unicef联系,以确定RapidPro是否可用以及在您所在的国家/地区是否可以用于健康报告。

使用商业短信网关提供商

在上面的“发送SMS”部分提到的商业SMS网关提供商中,它们通常具有在大多数国家(地区)发送 SMS的功能,但只能在少数国家/地区支持*接收* SMS。他们支持接收SMS的大多数国家/地区不是使用DHIS2的国家/地区。在使用DHIS2的国家/地区中,大多数已经在国内运行RapidPro服务了。

但是,值得研究您所在国家/地区可以使用哪些商业选项。在某些国家/地区,会有一些小型国家公司提供SMS服务,它们将与您可以使用的电话提供商建立现有的SMPP连接。

直接使用电话运营商

如果以上解决方案均不可用,则有必要直接与您所在国家的电话运营商联系。向他们询问的第一个问题是,他们是否知道与您有联系的与他们进行SMPP连接的任何公司。

如果不是这样,作为最后的选择,您将需要考虑与电话提供商建立并维护自己的SMPP连接。但是,并非所有电话提供商都可以提供这种服务。

您需要运行自己的服务器,该服务器上运行的软件例如[Kannel](https://www.kannel.org/),该软件(通常通过VPN)连接到在电话提供商网络中运行的SMPP服务。有了此设置,任何配置的长号或短码的传入SMS都会从电话运营商发送到Kannel服务器,然后您可以按照上述方式转发这些消息。

接收串联或多部分短信

通过短信与 DHIS2 Android 应用项目同步数据时,会使用压缩格式,以尽可能减少空间(文本字符)。尽管如此,还是会经常出现信息超过标准 SMS 的 160 个字符限制的情况。在大多数现代移动设备上,这些信息仍将作为一条连接短信或多部分短信发送,并作为一条信息接收。

然后,在选择SMS网关时,重要的是确认所使用的电话运营商支持级联SMS。他们中的大多数人都将支持此功能,但是重要的是要进行确认,因为如果拆分SMS,SMS功能将无法使用。这依赖于称为UDH(用户数据头)的东西。与提供商讨论时,请确保您询问是否支持。