mudassar1/nexmo-laravel

Nexmo PHP 客户端库的 Laravel 包

3.0.2 2023-02-22 17:50 UTC

README

Laravel 的 Nexmo 包

Latest Stable Version Latest Unstable Version License Total Downloads

Nexmo is now known as Vonage

简介

这是一个简单的 Laravel 服务提供者,提供对 Nexmo PHP 客户端库 的访问。

安装

使用 Composer 安装 PHP 客户端库

composer require nexmo/laravel

或者,将这些两行添加到您的 composer require 部分

{
    "require": {
        "nexmo/laravel": "^2.0"
    }
}

Laravel 5.5+

如果您使用的是 Laravel 5.5 或更高版本,则该包将自动注册 Nexmo 提供器和外观。

Laravel 5.4 及以下

Nexmo\Laravel\NexmoServiceProvider 添加到您的 config/app.php 中的 providers 数组

'providers' => [
    // Other service providers...

    Nexmo\Laravel\NexmoServiceProvider::class,
],

如果您想使用外观接口,可以在需要时使用外观类

use Nexmo\Laravel\Facade\Nexmo;

或者,在 config/app.php 中添加别名

'aliases' => [
    ...
    'Nexmo' => Nexmo\Laravel\Facade\Nexmo::class,
],

在 Lumen 中使用 Nexmo-Laravel

Nexmo-Laravel 也与 Lumen 兼容!您需要手动做一些工作来运行它。首先,使用 composer 安装包

composer require nexmo/laravel

接下来,我们需要告诉 Lumen 我们的库存在。更新 bootstrap/app.php 并注册 NexmoServiceProvider

$app->register(Nexmo\Laravel\NexmoServiceProvider::class);

最后,我们需要配置库。不幸的是,Lumen 不支持自动发布文件,因此您需要自己创建配置文件。创建一个配置目录并将配置文件从包中复制到您的项目中

mkdir config
cp vendor/nexmo/laravel/config/nexmo.php config/nexmo.php

此时,在您的 .env 文件中设置 NEXMO_KEYNEXMO_SECRET,它应该对您有效。您可以使用以下路由进行测试

$router->get('/', function () use ($router) {
    app(Nexmo\Client::class);
});

处理 Guzzle 客户端问题

默认情况下,此包使用 nexmo/client,它包含用于访问 API 的 Guzzle 适配器。某些其他库提供了自己的 Guzzle 适配器,导致 composer 无法解析依赖关系列表。您可能因为此原因在将 nexmo/laravel 添加到应用程序时遇到错误。

Nexmo 客户端允许您覆盖正在使用的 HTTP 适配器。这需要更多的配置,但此包允许您使用 nexmo/client-core 来提供自己的 HTTP 适配器。

要这样做

  1. 使用 composer require nexmo/client-core 安装 Core SDK

  2. 安装您自己的 httplug 兼容适配器。例如,要使用 Symfony 的 HTTP 客户端

    1. 使用 composer require symfony/http-client php-http/message-factory php-http/httplug nyholm/psr7
  3. 使用 composer require nexmo/laravel 安装此包

  4. 在您的 .env 文件中,添加以下配置

    NEXMO_HTTP_CLIENT="Symfony\\Component\\HttpClient\\HttplugClient"

您现在可以从 Laravel 服务容器中获取 Nexmo\Client 对象,或使用此包提供的外观。

配置

您可以使用 artisan vendor:publish 将分发配置文件复制到您的应用的配置目录

php artisan vendor:publish

然后更新 config/nexmo.php,使用您的凭据。或者,您也可以使用以下内容更新您的 .env 文件

NEXMO_KEY=my_api_key
NEXMO_SECRET=my_secret

如果需要,也可以设置一个 application_idprivate_key

NEXMO_APPLICATION_ID=my_application_id
NEXMO_PRIVATE_KEY=./private.key

私有密钥可以是文件路径,如上所示,也可以是密钥本身的字符串

NEXMO_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n[...]\n-----END PRIVATE KEY-----\n"
NEXMO_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----
[...]
-----END PRIVATE KEY-----
"

使用

要使用 Nexmo 客户端库,您可以使用外观,或从服务容器请求实例

Nexmo::message()->send([
    'to'   => '14845551244',
    'from' => '16105552344',
    'text' => 'Using the facade to send a message.'
]);

或者

$nexmo = app('Nexmo\Client');

$nexmo->message()->send([
    'to'   => '14845551244',
    'from' => '16105552344',
    'text' => 'Using the instance to send a message.'
]);

如果您使用私有密钥身份验证,尝试进行语音通话

Nexmo::calls()->create([
    'to' => [[
        'type' => 'phone',
        'number' => '14155550100'
    ]],
    'from' => [
        'type' => 'phone',
        'number' => '14155550101'
    ],
    'answer_url' => ['https://example.com/webhook/answer'],
    'event_url' => ['https://example.com/webhook/event']
]);

有关使用 Nexmo 客户端库的更多信息,请参阅 官方客户端库存储库