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

时间:2019-09-12 12:39:31

标签: nexmo

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

当前,我现在需要接收短信功能来进行GPS跟踪。我读了这个nexmo-inbound doc,我有疑问:

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

1 个答案:

答案 0 :(得分:1)

是免费还是付费?

这是一项付费服务​​,但新注册用户会获得2.00欧元的信用额。在您用尽最初的信用额之前,我们不需要任何帐单信息。 2.00欧元让您有足够的钱去使用许多API,而不仅仅是SMS。

发送或接收SMS的费用(通常为名义费用),但可能会因地区,国家和电话公司而异。对于大多数国家/地区,每条消息的价格应为€0.0057左右。

数字也按月出租。这大约是每月0.90欧元(同样,取决于电话号码和功能的区域)。

如何在Laravel中进行设置

我们确实提供了Laravel软件包,实际上它是2.0.0版的新发行版-nexmo/laravelhttps://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欧元开始,这足以租用一个号码并开始发送和接收消息。