我实际上使用nexmo成功完成了发送短信。
当前,我现在需要接收短信功能来进行GPS跟踪。我读了这个nexmo-inbound doc,我有疑问:
答案 0 :(得分:1)
是免费还是付费?
这是一项付费服务,但新注册用户会获得2.00欧元的信用额。在您用尽最初的信用额之前,我们不需要任何帐单信息。 2.00欧元让您有足够的钱去使用许多API,而不仅仅是SMS。
发送或接收SMS的费用(通常为名义费用),但可能会因地区,国家和电话公司而异。对于大多数国家/地区,每条消息的价格应为€0.0057左右。
数字也按月出租。这大约是每月0.90欧元(同样,取决于电话号码和功能的区域)。
如何在Laravel中进行设置
我们确实提供了Laravel软件包,实际上它是2.0.0版的新发行版-nexmo/laravel
(https://github.com/nexmo/nexmo-laravel)。这提供了一种从服务容器获取客户端的简便方法,并且还可以设置外观。如果您想直接使用nexmo/client
,也可以使用它。
首先,我们需要一个控制器。我们将创建一个控制器,该控制器可以发送一条SMS(作为演示),然后再发送一个以接收一条SMS。我将在SmsController
中创建app/Http/Controllers/SmsController.php
:
# 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');
发送短信非常简单。您可以从服务容器中获取我们的对象,然后通过一个调用进行发送。我们可以将班级更改为该班级(用您要获取消息的任何电话号码替换TO_NUMBER
)
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
,它将发送一条SMS消息到您配置的任何号码。
接收文本不需要我们的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仪表板上,转到“数字”,然后转到“您的数字”。在“管理”下,点击齿轮图标。在顶部的文本框中,输入世界可访问的地址(即:本地主机不起作用),例如“ http://example.com/sms/receive”或“ http://example.ngrok.io/sms/receive”,然后单击“确定”进行保存。
如果您向Nexmo号码发送短信,则该短信应尝试点击已配置的端点,并且您的应用程序可以根据需要处理传入的数据。
如果您没有互联网上可以访问的测试服务器,我们建议ngrok。这是一个免费程序,它将通过可访问的地址公开您的本地开发环境。我们有一篇文章here。
有关SMS系统的完整文档,请访问https://developer.nexmo.com/messaging/sms/overview。从技术上讲,PHP示例在Slim中,但是直接使用SDK,因此其中没有任何Slim特定的块。
您需要一个帐户才能使用该系统,因此您可以在https://dashboard.nexmo.com/sign-up上进行注册。您将以2.00欧元开始,这足以租用一个号码并开始发送和接收消息。