如何在 laravel (nexmo) 中集成“入站/接收消息”

cha*_*les -4 vonage

我实际上使用 nexmo 成功发送了短信

目前,我需要接收短信功能来进行 GPS 跟踪。我读了这个nexmo-inbound 文档,我有问题:

  • 我们可以免费试用模式(接收短信)吗?
  • 以及如何在 Laravel 中设置它(接收短信)?

dra*_*ank 5

是免费的还是付费的?

\n\n

这是付费服务,但新注册者将获得 \xe2\x82\xac2.00 积分来启动。在您用完初始信用额度之前,我们不需要任何账单信息。\xe2\x82\xac2.00 为您提供了足够的功能来使用许多 API,而不仅仅是 SMS。

\n\n

发送或接收短信(通常)会产生象征性的费用,但该费用可能会因地区、国家和电话公司的不同而有所不同。对于大多数国家/地区,它应该在 \xe2\x82\xac0.0057 左右一条消息。

\n\n

号码也是按月租用的。这大约是 \xe2\x82\xac0.90/月(同样,取决于电话号码和功能的区域)。

\n\n

如何在 Laravel 中进行设置

\n\n

我们确实提供了一个 Laravel 包,它实际上刚刚发布了 2.0.0 版的新版本 - nexmo/laravel( https://github.com/nexmo/nexmo-laravel )。这提供了一种从服务容器获取客户端的简单方法,并且还设置了一个外观。nexmo/client如果你想直接使用也可以使用。

\n\n

首先,我们需要一个控制器。我们将创建一个可以发送短信(作为演示)的控制器,然后创建一个可以接收短信的控制器。我将SmsController在以下位置创建app/Http/Controllers/SmsController.php

\n\n
# app/Http/Controllers/SmsController.php\n<?php\n\nnamespace App\\Http\\Controllers;\n\nuse Illuminate\\Http\\Request;\n\nclass SmsController extends Controller\n{\n    public function send()\n    {\n    }\n\n    public function receive()\n    {\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后我们将在以下位置注册这些路由routes/web.php

\n\n
Route::get(\'/sms/send\', \'SmsController@send\');\nRoute::get(\'/sms/receive\', \'SmsController@receive\');\n
Run Code Online (Sandbox Code Playgroud)\n\n

发送短信相当简单。您可以从服务容器中获取我们的对象并通过一次调用发送。我们可以将我们的类更改为这样(替换TO_NUMBER为您想要接收消息的任何电话号码):

\n\n
class SmsController extends Controller\n{\n    public function send()\n    {\n        $nexmo = $this->app->make(\\Nexmo\\Client::class);\n        $message= $nexmo->message()->send([\n            \'to\' => TO_NUMBER,\n            \'from\' => \'Acme Inc\',\n            \'text\' => \'A text message sent using the Nexmo SMS API\'\n        ]);\n        $response = $message->getResponseData();\n\n        return response()->json($response);\n    }\n\n    public function receive()\n    {\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果您访问http://localhost/sms/send,它应该向您配置的任何号码发送短信。

\n\n

接收文本不需要我们的 SDK,您只需要有一个可以接收请求的端点即可。首先,让我们改变我们的receive()工作方法:

\n\n
use Illuminate\\Http\\Request;\n\nclass SmsController extends Controller\n{\n    public function send()\n    {\n        $nexmo = $this->app->make(\\Nexmo\\Client::class);\n        $message= $nexmo->message()->send([\n            \'to\' => TO_NUMBER,\n            \'from\' => \'Acme Inc\',\n            \'text\' => \'A text message sent using the Nexmo SMS API\'\n        ]);\n        $response = $message->getResponseData();\n\n        return response()->json($response);\n    }\n\n    public function receive(Request $request)\n    {\n        $smsFrom = $request->query(\'msisdn\');\n        $smsMessage = $request->query(\'text\');\n\n        return response()->json([\'from\' => $smsFrom, \'message\' => $smsMessage]);\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

您可以点击https://localhost/sms/receive?msisdn=15555551234&text=Hello%20World,您应该得到类似于以下内容的输出:

\n\n
{\n    "from": "15555551234",\n    "message": "Hello World"\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在我们需要告诉 Nexmo 将 SMS 消息发送到哪里。在 Nexmo 仪表板上,转到“数字”,然后转到“您的数字”。在“管理”下单击齿轮图标。在顶部文本框中,输入世界可访问的地址(即:本地主机将不起作用),例如“ http://example.com/sms/receive ”或“ http://example.ngrok.io/sms/receive ” ,然后单击“确定”保存。

\n\n

如果您向 Nexmo 号码发送短信,它应该尝试命中配置的端点,并且您的应用程序可以根据需要处理传入数据。

\n\n

如果您没有可通过互联网访问的测试服务器,我们建议您使用ngrok。它是一个免费程序,将通过可访问的地址公开您的本地开发环境。我们这里有一篇文章。

\n\n

SMS 系统的完整文档可以在https://developer.nexmo.com/messaging/sms/overview找到。从技术上讲,PHP 示例是在 Slim 中使用的,但直接使用 SDK,因此其中没有任何 Slim 特定的块。

\n\n

您需要一个帐户才能使用该系统,因此您可以在https://dashboard.nexmo.com/sign-up上注册。您将首先获得 \xe2\x82\xac2.00,这足以租用一个号码并开始发送和接收消息。

\n