如何在 laravel 中集成 "inbound / recieve message" (nexmo)
How to integrate "inbound / recieve message" in laravel (nexmo)
实际上我使用 nexmo 发送短信 成功了。
目前,我需要 接收短信 功能来进行 GPS 跟踪。我读了这个 nexmo-inbound doc,我有问题:
- 我们可以免费试用模式(接收短信)吗?
- 如何在 Laravel(接收短信)中进行设置?
是免费还是付费?
这是付费服务,但新注册可获得 2.00 欧元的赠金。在您用完初始信用额度之前,我们不需要任何账单信息。 2.00 欧元的费用足以让您使用许多 API,而不仅仅是 SMS。
发送或接收 SMS 有一个(通常)名义成本,但它可能因地区、国家和电信phone 公司而异。对于大多数国家/地区,一条消息的费用应该在 0.0057 欧元左右。
号也是按月租的。这大约是每月 0.90 欧元(同样,取决于 telephone 号码和功能的区域)。
如何在 Laravel
中进行设置
我们确实提供了一个 Laravel 软件包,实际上它刚刚发布了 2.0.0 版的新版本 - nexmo/laravel
(https://github.com/nexmo/nexmo-laravel)。这提供了一种从服务容器中获取客户端并设置外观的简单方法。直接用的话也可以用nexmo/client
首先,我们需要一个控制器。我们将创建一个可以发送 SMS 的控制器(作为演示),然后创建一个控制器来接收 SMS。我要在 app/Http/Controllers/SmsController.php
:
中创建 SmsController
# app/Http/Controllers/SmsController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class SmsController extends Controller
{
public function send()
{
}
public function receive()
{
}
}
然后我们将在routes/web.php
中注册这些路由:
Route::get('/sms/send', 'SmsController@send');
Route::get('/sms/receive', 'SmsController@receive');
发送短信非常简单。您可以从服务容器中获取我们的对象并通过一次调用发送。我们可以将 class 更改为此(将 TO_NUMBER
替换为您想要获取消息的任何 phone 号码):
class SmsController extends Controller
{
public function send()
{
$nexmo = $this->app->make(\Nexmo\Client::class);
$message= $nexmo->message()->send([
'to' => TO_NUMBER,
'from' => 'Acme Inc',
'text' => 'A text message sent using the Nexmo SMS API'
]);
$response = $message->getResponseData();
return response()->json($response);
}
public function receive()
{
}
}
如果您访问 http://localhost/sms/send
,它应该会向您配置的任何号码发送短信。
接收文本不需要我们的SDK,您只需要有一个可以接收请求的端点即可。首先,让我们改变我们的 receive()
方法来工作:
use Illuminate\Http\Request;
class SmsController extends Controller
{
public function send()
{
$nexmo = $this->app->make(\Nexmo\Client::class);
$message= $nexmo->message()->send([
'to' => TO_NUMBER,
'from' => 'Acme Inc',
'text' => 'A text message sent using the Nexmo SMS API'
]);
$response = $message->getResponseData();
return response()->json($response);
}
public function receive(Request $request)
{
$smsFrom = $request->query('msisdn');
$smsMessage = $request->query('text');
return response()->json(['from' => $smsFrom, 'message' => $smsMessage]);
}
}
您可以点击 https://localhost/sms/receive?msisdn=15555551234&text=Hello%20World
并且您应该得到类似于以下内容的输出:
{
"from": "15555551234",
"message": "Hello World"
}
现在我们需要告诉 Nexmo 将 SMS 消息发送到哪里。在 Nexmo 仪表板上,转到 "Numbers," 然后 "Your Numbers." 在 "Manage" 下单击齿轮图标。在顶部的文本框中,输入一个全球可达的地址(即:localhost 将不起作用),例如“http://example.com/sms/receive" or "http://example.ngrok.io/sms/receive”,然后单击"OK" 保存。
如果您向您的 Nexmo 号码发送短信,它应该会尝试访问配置的端点,并且您的应用程序可以根据需要处理传入的数据。
如果您没有可在 Internet 上访问的测试服务器,我们建议 ngrok. It is a free program that will expose your local development environment through a reachable address. We have a writeup here。
可在 https://developer.nexmo.com/messaging/sms/overview 找到 SMS 系统的完整文档。 PHP 示例在技术上位于 Slim 中,但直接使用 SDK,因此其中没有任何 Slim 特定的块。
您需要一个帐户才能使用该系统,因此您可以在 https://dashboard.nexmo.com/sign-up 注册。您将获得 2.00 欧元的起始费用,这足以租用一个号码并开始发送和接收消息。
实际上我使用 nexmo 发送短信 成功了。
目前,我需要 接收短信 功能来进行 GPS 跟踪。我读了这个 nexmo-inbound doc,我有问题:
- 我们可以免费试用模式(接收短信)吗?
- 如何在 Laravel(接收短信)中进行设置?
是免费还是付费?
这是付费服务,但新注册可获得 2.00 欧元的赠金。在您用完初始信用额度之前,我们不需要任何账单信息。 2.00 欧元的费用足以让您使用许多 API,而不仅仅是 SMS。
发送或接收 SMS 有一个(通常)名义成本,但它可能因地区、国家和电信phone 公司而异。对于大多数国家/地区,一条消息的费用应该在 0.0057 欧元左右。
号也是按月租的。这大约是每月 0.90 欧元(同样,取决于 telephone 号码和功能的区域)。
如何在 Laravel
中进行设置我们确实提供了一个 Laravel 软件包,实际上它刚刚发布了 2.0.0 版的新版本 - nexmo/laravel
(https://github.com/nexmo/nexmo-laravel)。这提供了一种从服务容器中获取客户端并设置外观的简单方法。直接用的话也可以用nexmo/client
首先,我们需要一个控制器。我们将创建一个可以发送 SMS 的控制器(作为演示),然后创建一个控制器来接收 SMS。我要在 app/Http/Controllers/SmsController.php
:
SmsController
# app/Http/Controllers/SmsController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class SmsController extends Controller
{
public function send()
{
}
public function receive()
{
}
}
然后我们将在routes/web.php
中注册这些路由:
Route::get('/sms/send', 'SmsController@send');
Route::get('/sms/receive', 'SmsController@receive');
发送短信非常简单。您可以从服务容器中获取我们的对象并通过一次调用发送。我们可以将 class 更改为此(将 TO_NUMBER
替换为您想要获取消息的任何 phone 号码):
class SmsController extends Controller
{
public function send()
{
$nexmo = $this->app->make(\Nexmo\Client::class);
$message= $nexmo->message()->send([
'to' => TO_NUMBER,
'from' => 'Acme Inc',
'text' => 'A text message sent using the Nexmo SMS API'
]);
$response = $message->getResponseData();
return response()->json($response);
}
public function receive()
{
}
}
如果您访问 http://localhost/sms/send
,它应该会向您配置的任何号码发送短信。
接收文本不需要我们的SDK,您只需要有一个可以接收请求的端点即可。首先,让我们改变我们的 receive()
方法来工作:
use Illuminate\Http\Request;
class SmsController extends Controller
{
public function send()
{
$nexmo = $this->app->make(\Nexmo\Client::class);
$message= $nexmo->message()->send([
'to' => TO_NUMBER,
'from' => 'Acme Inc',
'text' => 'A text message sent using the Nexmo SMS API'
]);
$response = $message->getResponseData();
return response()->json($response);
}
public function receive(Request $request)
{
$smsFrom = $request->query('msisdn');
$smsMessage = $request->query('text');
return response()->json(['from' => $smsFrom, 'message' => $smsMessage]);
}
}
您可以点击 https://localhost/sms/receive?msisdn=15555551234&text=Hello%20World
并且您应该得到类似于以下内容的输出:
{
"from": "15555551234",
"message": "Hello World"
}
现在我们需要告诉 Nexmo 将 SMS 消息发送到哪里。在 Nexmo 仪表板上,转到 "Numbers," 然后 "Your Numbers." 在 "Manage" 下单击齿轮图标。在顶部的文本框中,输入一个全球可达的地址(即:localhost 将不起作用),例如“http://example.com/sms/receive" or "http://example.ngrok.io/sms/receive”,然后单击"OK" 保存。
如果您向您的 Nexmo 号码发送短信,它应该会尝试访问配置的端点,并且您的应用程序可以根据需要处理传入的数据。
如果您没有可在 Internet 上访问的测试服务器,我们建议 ngrok. It is a free program that will expose your local development environment through a reachable address. We have a writeup here。
可在 https://developer.nexmo.com/messaging/sms/overview 找到 SMS 系统的完整文档。 PHP 示例在技术上位于 Slim 中,但直接使用 SDK,因此其中没有任何 Slim 特定的块。
您需要一个帐户才能使用该系统,因此您可以在 https://dashboard.nexmo.com/sign-up 注册。您将获得 2.00 欧元的起始费用,这足以租用一个号码并开始发送和接收消息。