deyan-ardi/ganadev-notif

Laravel Ganadev 通知服务是一个用于帮助加速您开发的应用程序与 Ganadev 通知发送 API 集成过程的 Laravel 扩展包。此扩展包包含便于使用的函数,真正有助于您的工作流程

v3.0.1 2023-09-24 02:37 UTC

This package is auto-updated.

Last update: 2024-09-24 05:00:30 UTC


README

phpbootstrap

什么是 Ganadev 通知发送 API?

Ganadev 通知发送是由 GanaDev Com 开发的 API,旨在简化并支持快速发送通知的过程,而不会干扰主应用程序。此 API 开发中使用的概念是微服务,您的应用程序通过我们的 API 发送通知请求,我们将帮助将其发送到您的用户。使用此概念,您的应用程序将比通常有更快的执行时间。Ganadev 通知发送目前仅支持通过电子邮件和 WhatsApp 发送通知。

什么是 Laravel Ganadev 通知服务包?

Laravel Ganadev 通知服务是一个用于帮助加速您开发的应用程序与 Ganadev 通知发送 API 集成过程的 Laravel 扩展包。此扩展包包含便于使用的函数,真正有助于您的工作流程,因此您无需再手动完成

支持版本

系统要求

  • PHP 版本 "^7.3|7.4|^8.0|^8.1|^8.2"
  • Guzzle HTTP (默认由 Laravel 提供,如果您的 Laravel 中没有,请安装)

安装

  • 打开终端,运行此命令
composer require deyan-ardi/ganadev-notif
  • 成功后,运行此命令以发布配置文件 ganadevnotif.php 到 Laravel 的配置文件夹
php artisan vendor:publish --provider="DeyanArdi\GanadevNotif\GanadevServiceProvider" --tag="config"
  • 在项目 .env 文件中添加此密钥
GANADEV_REPLACE_STATUS=true
GANADEV_NOTIF_DEVICE="<YOUR-DEVICE-SELECTED>"
GANADEV_NOTIF_TOKEN="<YOUR-API-TOKEN>"

如何获取 API 密钥

  • 请通过此网址联系 GanaDev Com https://ganadev.com/kontak。当您的请求批准后,您将获得 GanaDev Com 通知 API v3 的账户以登录(https://sv1.wa-api.ganadev.com/home
  • 在右上角选择设置菜单
  • 在 API Key 列表中是您的 API 密钥,将其复制到您的 .env 作为 GANADEV_NOTIF_TOKEN

如何注册设备

  • 点击仪表板菜单
  • 选择添加设备并填写所有必填表单。
  • 通过在 WhatsApp 中使用链接设备功能将您的设备连接到 WhatsApp
  • 默认情况下,WA 通知状态和电子邮件通知状态为激活,如果禁用,则无法使用 WhatsApp API 或电子邮件 API
  • 将设备的号码复制到您的 .env 作为 GANADEV_NOTIF_DEVICE 配置

如何使用

与 Laravel 邮件集成

要将此包与 Laravel 邮件集成,首先您必须在 config/mail.php 中添加新的邮件方法

'mailers' => [
    // ....
    'ganadev' => [
            'transport' => 'smtp',
            'host' => env('GANADEV_MAIL_HOST'),
            'port' => env('GANADEV_MAIL_PORT'),
            'encryption' => env('GANADEV_MAIL_ENCRYPTION'),
            'username' => env('GANADEV_MAIL_USERNAME'),
            'password' => env('GANADEV_MAIL_PASSWORD'),
            'timeout' => null,
            'local_domain' => env('GANADEV_MAIL_EHLO_DOMAIN'),
    ],
    // ....
]

之后,将默认的 MAIL_MAILER 设置为 ganadev 并在 .env 文件中将 GANADEV_REPLACE_STATUS 设置为 true

MAIL_MAILER=ganadev
GANADEV_REPLACE_STATUS=true

这样,每次您使用 Laravel Mailer 发送电子邮件时,使用的电子邮件配置就是 Ganadev 通知发送 API 服务器上的配置。之后,如果您更改了电子邮件配置,只需在 Ganadev 通知发送 API 服务器(https://sv1.wa-api.ganadev.com/home)上更改它即可,这样使用设备账户的所有您的应用程序也会被更新。另一个优点是,您再也不必担心您的电子邮件配置会被其他人知道,因为您的电子邮件配置与应用程序分离。

最后,如果您启用此功能,默认情况下,此软件包将每15分钟自动向 Ganadev 通知发送 API 服务器发送请求。这意味着,如果您后来在 Ganadev 通知发送 API 服务器上更改了设备账户。更改将在15分钟后生效。您可以在 config/ganadevnotif.php 文件中的 idle_time 配置中更改配置。我们提供了默认选项,即每15分钟、30分钟或60分钟请求一次。

与 Laravel 队列集成

默认情况下,此软件包使用您应用程序队列设置中使用的 Laravel 队列方法向 API 服务器发送请求。您可以通过在 config/ganadevnotif.php 中将 must_queue 设置为 false 来禁用它。

如果您想手动使用作业运行特定的 API 功能,可以使用以下命令发布作业文件:

php artisan vendor:publish --provider="DeyanArdi\GanadevNotif\GanadevServiceProvider" --tag="jobs"

现在所有作业都将发布到作业文件夹,您可以使用 Laravel 队列方法调用它。请阅读 Laravel 队列的文档,链接为 https://laravel.net.cn

仅发送邮件消息

您可以使用名为 sendMailMessage 的方法发送电子邮件消息(不带图片),此方法需要三个参数 send_tosubjectmessage。示例用法

use DeyanArdi\GanadevNotif\GanadevApi;

public function sendingMessageText(){
    $send_to = "yourtargetemail@gmail.com";
    $subject = "Test Subject";

    // Using Text Message
    $message = "Text Message"
    GanadevApi::sendMailMessage($send_to, $subject, $message)
}

public function sendingWithCustomView(){
    $send_to = "yourtargetemail@gmail.com";
    $subject = "Test Subject";

    // Using Laravel Views
    $message = view('emails.exampleNotification', compact('subject','send_to'))->render(); // Your custom view with render method
    GanadevApi::sendMailMessage($send_to, $subject, $message)
}

发送邮件媒体(带图片或其他媒体)

您可以使用名为 sendMailMedia 的方法发送带图片或其他媒体的电子邮件消息,此方法需要六个参数 send_tosubjectmessagefilenamelinkmime_type。有关 mime_type 列表,请在此处查看 https://mdn.org.cn/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types 示例用法

use DeyanArdi\GanadevNotif\GanadevApi;

public function sendingMessageText(){
    $send_to = "yourtargetemail@gmail.com";
    $subject = "Test Subject";
    $filename = "test.jpg"; // Filename must with file extension, support all document (docx, doc, xls, xlsx, video, audio, image, pdf dan zip)
    $link = "https://[yourdomain]/images/test.jpg"; //File must be upload on server, cant support localhost
    $mime_type ="image/jpeg"; 

    // Using Text Message
    $message = "Text Message"
    GanadevApi::sendMailMedia($send_to, $subject, $message, $filename, $link, $mime_type);
}

public function sendingWithCustomView(){
    $send_to = "yourtargetemail@gmail.com";
    $subject = "Test Subject";
    $filename = "test.jpg"; // Filename must with file extension, support all document (docx, doc, xls, xlsx, video, audio, image, pdf dan zip)
    $link = "https://[yourdomain]/images/test.jpg"; //File must be upload on server, cant support localhost
    $mime_type ="image/jpeg";

    // Using Laravel Views
    $message = view('emails.exampleNotification', compact('subject','send_to'))->render(); // Your custom view with render method
    GanadevApi::sendMailMedia($send_to, $subject, $message, $filename, $link, $mime_type)
}

仅发送 WhatsApp 消息

您可以使用名为 sendWaMessage 的方法发送 WhatsApp 消息(不带图片),此方法需要两个参数 send_tomessage。示例用法

use DeyanArdi\GanadevNotif\GanadevApi;

public function yourExampleFunction(){
    $send_to = "6281915003004" // Must include country code
    $message = "Text Message"
    GanadevApi::sendWaMessage($send_to, $message)
}

发送 WhatsApp 媒体(带图片或其他媒体)

您可以使用名为 sendWaMedia 的方法发送带图片或其他媒体的 WhatsApp 媒体,此方法需要四个参数 send_tolinktypemessage。示例用法

use DeyanArdi\GanadevNotif\GanadevApi;

public function sendingImageVideo(){
    $send_to = "6281915003004" // Must include country code
    $type = "image" // please choose one type [image,video,audio,pdf,xls,xlsx,doc,docx,zip] 
    $link = "https://[yourdomain]/images/test.jpg"; 

    // If you choose type "image" or "video", you can add caption for message
    $caption = "Text Message"
    GanadevApi::sendWaMedia($send_to, $link, $type, $caption)
}

public function sendingAudio(){
    $send_to = "6281915003004" // Must include country code
    $type = "image" // please choose one type [image,video,audio,pdf,xls,xlsx,doc,docx,zip] 
    $link = "https://[yourdomain]/images/test.jpg"; 
    $ppt = true; // If you choose type "audio, you can add ppt configuration, the value is true = voice note | false = audio

    GanadevApi::sendWaMedia($send_to, $link, $type, $ppt)
}

public function sendingOtherMedia(){
    $send_to = "6281915003004" // Must include country code
    $type = "image" // please choose one type [image,video,audio,pdf,xls,xlsx,doc,docx,zip] 
    $link = "https://[yourdomain]/images/test.jpg"; 

    // If you choose "pdf","xls","xlsx","doc","docx","zip", you can follow this
    GanadevApi::sendWaMedia($send_to, $link, $type)
}

获取“设备账户”信息

“设备账户”一词表示包含您的电子邮件和 WhatsApp 数据的配置。您可以通过使用 getDevice 方法获取您使用的设备的详细信息,此方法不需要参数。示例用法

use DeyanArdi\GanadevNotif\GanadevApi;

public function yourExampleFunction(){
    GanadevApi::getDevice() // This method return detail of your device using in app, this request using api token and device id to get
}

响应结构

默认情况下,方法的响应是 json 响应,您可以在 config/ganadevnotif.php 中将其更改为 array。以下是方法的示例响应结构

{
    "status":200,
    "message":"<MESSAGE API RESPONSE HERE>"
    "data":"<DATA GET FROM SERVER API>"
}

贡献

版本

  • v3.0.1

许可证

Laravel Ganadev 通知服务软件包是开源软件,许可协议为 MIT 许可证