更新后无法从 smsgateway.me 发送短信

Not able to send sms from smsgateway.me after its update

我使用 php 从本地主机以编程方式发送短信。但是今天 smsgateway.me 更新到 v4 后,我无法发送任何消息。我实际上不知道如何将 API 键传递给给定的示例。我尝试了很多但没有成功。

Request Endpoint
Endpoint:   https://smsgateway.me/api/v4/message/send
Method: POST
Request Parameters
Name    Location    Required    Description
Content body    true    JSON payload with the information of SMS messages the API should send

请求示例

[
  {
    "phone_number": "07791064781",
    "message": "Hello World",
    "device_id": 1
  },
  {
    "phone_number": "07791064782",
    "message": "Hello World",
    "device_id": 2
  }
]

我也问过邮递员,但它正在返回 "500 Internal Server Error"

你能检查一下并帮助我吗?谢谢。

我阅读了他们网站上的文档,看来您可能忘记在请求中发送 API 密钥。如果您有 API 密钥,则需要在 Authorization header.

中发送
Authorization: <the api key here>

使用 Postman,您可以设置此 header 并重试。

我去年找到了 smsGateway.php 并且能够以编程方式实现短信发送,但是在 2018 年 5 月 10 日该应用程序停止工作,我注意到该应用程序能够连接到 smsGateway 服务器但是无法检索消息,原因是因为程序无法将短信放在 smsGateway 服务器上,更深入地看,错误是设备 ID 不正确,这不是真的,深入研究我发现的问题新版本从 v3 实施到 v4,需要额外的信息才能从我的 php 程序提交到 smsGateway 服务器,这是授权密钥,您可以在使用登录名和密码访问网页时找到它。挑战在于如何集成 smsGateway.php 我仍在寻找对新版本进行更改的程序,但我还没有找到它。

2018 年 5 月 16 日 smsgateway.me 现在发布了关于如何集成一些软件以编程方式发送短信的方向,如果你有 PHP 5.3 版本的新挑战,你可能会在集成新程序时遇到一些问题。顺便说一下,比 v3 复杂得多。

还有一个注释'Please note we are still working on the documentation and will be introducing new SDKs soon!'让我有点害怕。我仍在进行集成,但我正在将 PHP 版本升级到 5.6,看看这是否足以消除错误消息。

将我的 php 升级到 5.5 后,我能够使 smsgateway.me 工作,从 https://github.com/smsgatewayme/client-php下载下一组程序文件

require_once(__DIR__ . '/autoload.php');
use SMSGatewayMe\Client\ApiClient;
use SMSGatewayMe\Client\Configuration;
use SMSGatewayMe\Client\Api\MessageApi;
use SMSGatewayMe\Client\Model\SendMessageRequest;

$clients = new SMSGatewayMe\Client\ClientProvider(
    "your key from website"
);
$sendMessageRequest = new SMSGatewayMe\Client\Model\SendMessageRequest
([
    'phoneNumber' => $HAMiLote['HASMSTel'], 
    'message' => $AXMessage, 'deviceId' => 100701
]);
$sentMessages =   
$clients->getMessageClient()->sendMessages([$sendMessageRequest]);

?><pre><?php print_r($sentMessages); ?></pre><?php

由于网站上的文档是新的,没有向多个 phone 号码发送短信的示例,我想分享这个 jQuery 代码,可用于使用 [=16] 发送短信=].

var p = {
    "phone1": "9999999999",
    "phone2": "8888888888"
};

for (var key in p) {
    if (p.hasOwnProperty(key)) {
        var phone_number = p[key];
        var message = "Test SMS";
        var device_id = 1;
        var obj = [{
            "phone_number": phone_number,
            "message": message,
            "device_id": device_id
        }];
        var mydata = JSON.stringify(obj);
        var settings = {
            "async": true,
            "crossDomain": true,
            "url": "https://smsgateway.me/api/v4/message/send",
            "method": "POST",
            "headers": {
                "Authorization": "YOUR_API_KEY",
                "Content-Type": "application/json",
            },
            "processData": false,
            data: mydata
        }
        $.ajax(settings).done(function(response) {
            console.log(response);
        });
    }
}

此 jQuery 代码工作正常,但有时它会向给定 js 对象中的任意号码发送多条短信。这可能是由于 for 循环。

https://smsgateway.me获取令牌。 登录您的帐户并单击设置,然后您将看到令牌。

public function sendMsgWithSmsGatewayApi($msg,$number,$deviceid)
    {
        $curl = curl_init();
        curl_setopt_array($curl, array(
          CURLOPT_URL => "https://smsgateway.me/api/v4/message/send",
          CURLOPT_SSL_VERIFYPEER=>false,
          CURLOPT_RETURNTRANSFER => true,
          CURLOPT_ENCODING => "",
          CURLOPT_MAXREDIRS => 10,
          CURLOPT_TIMEOUT => 30,
          CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
          CURLOPT_CUSTOMREQUEST => "POST",
          CURLOPT_POSTFIELDS => "[{\"phone_number\": \"$number\", \"message\": \"$msg\", \"device_id\": $deviceid}]",
          CURLOPT_HTTPHEADER => array(
            "Cache-Control: no-cache",
            "Postman-Token: 0dfb5acc-f0ae-415b-a5d3-ca12a2dfdfd3",
            "authorization: Your-Token-here"
          ),
        ));

        $response = curl_exec($curl);
        $err = curl_error($curl);

        curl_close($curl);

        if ($err) {
          echo "cURL Error #:" . $err;
        } else {
          echo $response;
        }
    }