2

我一直在寻找类似的主题,但找不到任何解决方案,我希望有人可以帮助我..

注意:我在 xampp localhost 上运行脚本,我的国家代码是 +90 我按照 Nexmo 文档发送短信。下面是php脚本。

<?php

$url = 'https://rest.nexmo.com/sms/json?' . http_build_query(
    [
      'api_key' =>  'xxxxxxxx',
      'api_secret' => 'xxxxxxxxxxx',
      'to' => 90542xxxxxxx,
      'from' => 'MyCompanyName',
      'text' => 'Working'
    ]
);

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);

echo $response;

?>

以下是结果。似乎它正在发送它但是我没有在我的手机上收到短信可能会导致这种情况?

{ "message-count": "1", "messages": [{ "to": "90542xxxxxxx", "message-id": "0C00000016FF36E9", "status": "0", "remaining-balance": "1.77080000", "message-price": "0.01910000", "network": "28602" }] }
4

1 回答 1

1

短信未送达的原因:

  1. 在不允许使用此类发件人 ID 的区域中使用字母数字发送。这是土耳其地区 (+90) 的法律要求。在这种情况下,Nexmo 会将发件人 ID 更改为NXSMS. 有关支持字母数字发件人 ID 的详细信息,请参阅: https ://docs.nexmo.com/messaging/sms-api/building-global-apps#country_specific_features
  2. 承运人未能传递消息。可以(并且建议)设置一个 webhook 回调,以便您的应用程序收到交货回执。请参阅https://docs.nexmo.com/messaging/sms-api/api-reference#delivery_receipt

提高交付机会的一种方法是使用from通过 Nexmo 购买的号码。在这些示例中,还有一个callback参数集,以便向应用程序通知 SMS 传送。

使用Nexmo PHP 客户端库

<?php
$client = new Nexmo\Client(new Nexmo\Client\Credentials\Basic(API_KEY, API_SECRET));

$message = $client->message()->send([
    'to' => '90542xxxxxxx',
    'from' => '90555xxxxxxx',
    'text' => 'Working',
    'callback' => 'https://example.com/dlr;
]);

或基于问题中的代码:

<?php

$url = 'https://rest.nexmo.com/sms/json?' . http_build_query(
    [
      'api_key' =>  'xxxxxxxx',
      'api_secret' => 'xxxxxxxxxxx',
      'to' => '90542xxxxxxx',
      'from' => '90555xxxxxxx',
      'text' => 'Working',
      'callback' => 'https://example.com/dlr;
    ]
);

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);

echo $response;

相关:关于在土耳其发送短信的 Nexmo 常见问题

于 2017-02-22T15:12:27.657 回答