luannsr12/apiwpp

用于 Api Whatsapp 的 Golang Sdk

v2.0.0 2024-05-23 21:28 UTC

This package is auto-updated.

Last update: 2024-09-24 03:18:22 UTC


README

Api Wuzapi: asternic/wuzapi
Api Evolution: evolution-api

可用功能

  • 发送视频
  • 发送音频
  • 发送文档
  • 发送图片
  • 发送文本
  • 检查 WhatsApp 号码
  • 个人资料图片
  • 个人资料详情

安装 composer

 composer require luannsr12/apiwpp

每个 API 都有自己的类

针对 Evolution

<?php 
 
 require_once 'vendor/autoload.php';

 use Apiwpp\Config\Api;
 use Apiwpp\Error\ExceptionError;
 use Apiwpp\Api\Evolution\Account;
 use Apiwpp\Api\Evolution\Device;
 use Apiwpp\Api\Evolution\Message;
  
 // Definir configurações da API
 Api::setConfigs('TOKEN_ADMIN', 'http://127.0.0.1/apiwpp/', 'Evolution');

针对 Wuzapi(已过时)

<?php 
 
 require_once 'vendor/autoload.php';

 use Apiwpp\Config\Api;
 use Apiwpp\Error\ExceptionError;
 use Apiwpp\Api\Wuzapi\Account;
 use Apiwpp\Api\Wuzapi\Device;
 use Apiwpp\Api\Wuzapi\Message;
  
 // Definir configurações da API
 Api::setConfigs('TOKEN_ADMIN', 'http://127.0.0.1/apiwpp/', 'Wuzapi');

创建实例

<?php 
 
 require_once 'vendor/autoload.php';

 use Apiwpp\Config\Api;
 use Apiwpp\Error\ExceptionError;
 use Apiwpp\Api\Evolution\Device;

 // Definir configurações da API
 Api::setConfigs('TOKEN_ADMIN', 'http://127.0.0.1/apiwpp/', 'Evolution');
 Api::debug(); // default true - Para não debugar não chame a função, ou passe false como parametro
 
 // Criar instância
 $create = Device::create("NOVO_TOKEN_123", "NOME_INSTANCIA");

 if($create){
    echo 'Instância criada com sucesso!';
 }else{
    var_dump(ExceptionError::getMessage()); // Json response
 }

恢复二维码

需要注意的是,如果使用已连接的设备查找二维码,将返回错误。

<?php 
 
 require_once 'vendor/autoload.php';

 use Apiwpp\Config\Api;
 use Apiwpp\Error\ExceptionError;
 use Apiwpp\Api\Evolution\Device;

 // Definir configurações da API
 Api::setConfigs('TOKEN_ADMIN', 'http://127.0.0.1/apiwpp/', 'Evolution');
 Api::debug(); // default true - Para não debugar não chame a função, ou passe false como parametro
 
 // Setar o token
 Device::setInstance('NOVO_TOKEN_123', 'NOME_INSTANCIA');
 $connected = Device::isConnected(); // false or true

 if(!$connected){
    // caso n esteja conectado carrega o qrcode
    Device::loadQr();
 
    // após carregar o qrcode podemos recupera-lo
    $qrcode = Device::getQrcode();

    // verifica se houve algum erro no processo
    if(ExceptionError::$error && $qrcode != "" && $qrcode != NULL){
        // se houve erro imprimir o erro
       var_dump(ExceptionError::getMessage()); // Json response
    }else{
        // Se não ocorreu erro mostra o qrcode
        echo '<img src="'.$qrcode.'" /> ';
    }

 }else{
    // Dispositivo já está conectado
    echo 'Conectado!';
 }

为设备定义一个 WebHook

每次收到消息时,将收到 REQUEST:POST 请求

<?php 
 
 require_once 'vendor/autoload.php';

 use Apiwpp\Config\Api;
 use Apiwpp\Error\ExceptionError;
 use Apiwpp\Api\Evolution\Device;

 // Definir configurações da API
 Api::setConfigs('TOKEN_ADMIN', 'http://127.0.0.1/apiwpp/', 'Evolution');
 Api::debug(); // default true - Para não debugar não chame a função, ou passe false como parametro
 
 // Setar o token
 Device::setInstance('NOVO_TOKEN_123', 'NOME_INSTANCIA');
 $setWebhook = Device::setWebhook('http://site.com'); // para Evolution use 'disabled' para desativar o webhook

 
 var_dump($setWebhook); // true or false
 

恢复 WebHook

<?php 
 
 require_once 'vendor/autoload.php';

 use Apiwpp\Config\Api;
 use Apiwpp\Error\ExceptionError;
 use Apiwpp\Api\Evolution\Device;

 // Definir configurações da API
 Api::setConfigs('TOKEN_ADMIN', 'http://127.0.0.1/apiwpp/', 'Evolution');
 Api::debug(); // default true - Para não debugar não chame a função, ou passe false como parametro
 
 // Setar o token
 Device::setInstance('NOVO_TOKEN_123', 'NOME_INSTANCIA');
 $webhook = Device::getWebhook();
 
 var_dump($webhook); // object: ['subscribe' => 'Message', 'webhook' => 'http://site.com' ]

发送文本消息

<?php 
 
 require_once 'vendor/autoload.php';

 use Apiwpp\Config\Api;
 use Apiwpp\Error\ExceptionError;
 use Apiwpp\Api\Evolution\Device;
 use Apiwpp\Api\Evolution\Message;

 // Definir configurações da API
 Api::setConfigs('TOKEN_ADMIN', 'http://127.0.0.1/apiwpp/', 'Evolution');
 Api::debug(true); // default true - Para não debugar não chame a função, ou passe false como parametro

 // Define qual instancia irá enviar a mensagem
 Device::setInstance('NOVO_TOKEN_123', 'NOME_INSTANCIA');
 
 Message::type('text');
 Message::phone('551199999999');
 Message::text('Mensagem aqui');

 if(Message::send()){
    echo 'Mensagem enviada! <br />';
    echo 'Id: ' . Message::$lastIdMessage;
 }else{
    var_dump(ExceptionError::getMessage());
 }

通过文件 URL 发送视频。

需要注意的是,仅接受 .mp4 和 .3gpp 格式的视频。

<?php 
 
 require_once 'vendor/autoload.php';

 use Apiwpp\Config\Api;
 use Apiwpp\Error\ExceptionError;
 use Apiwpp\Api\Evolution\Device;
 use Apiwpp\Api\Evolution\Message;

 // Definir configurações da API
 Api::setConfigs('TOKEN_ADMIN', 'http://127.0.0.1/apiwpp/', 'Evolution');
 Api::debug(true); // default true - Para não debugar não chame a função, ou passe false como parametro

 // Define qual instancia irá enviar a mensagem
 Device::setInstance('NOVO_TOKEN_123', 'NOME_INSTANCIA');
 
 Message::type('video');
 Message::phone('551199999999');
 Message::fileUrl('http://umsitequalquer.com/arquivos/video.mp4');
 Message::caption('Um texto anexado ao video'); // Opcional

 if(Message::send()){
    echo 'Mensagem enviada! <br />';
    echo 'Id: ' . Message::$lastIdMessage;
 }else{
    var_dump(ExceptionError::getMessage());
 }

通过文件 URL 发送音频。

需要注意的是,使用 Wuzapi 仅接受 .ogg 格式的音频。对于 Evolution,.mp3 格式也适用。

<?php 
 
 require_once 'vendor/autoload.php';

 use Apiwpp\Config\Api;
 use Apiwpp\Error\ExceptionError;
 use Apiwpp\Api\Evolution\Device;
 use Apiwpp\Api\Evolution\Message;

 // Definir configurações da API
 Api::setConfigs('TOKEN_ADMIN', 'http://127.0.0.1/apiwpp/', 'Evolution');
 Api::debug(true); // default true - Para não debugar não chame a função, ou passe false como parametro

 // Define qual instancia irá enviar a mensagem
 Device::setInstance('NOVO_TOKEN_123', 'NOME_INSTANCIA');
 
 Message::type('audio');
 Message::phone('551199999999');
 Message::fileUrl('http://umsitequalquer.com/arquivos/audio.ogg');

 if(Message::send()){
    echo 'Mensagem enviada! <br />';
    echo 'Id: ' . Message::$lastIdMessage;
 }else{
    var_dump(ExceptionError::getMessage());
 }

通过文件 URL 发送图片。

<?php 
 
 require_once 'vendor/autoload.php';

 use Apiwpp\Config\Api;
 use Apiwpp\Error\ExceptionError;
 use Apiwpp\Api\Evolution\Device;
 use Apiwpp\Api\Evolution\Message;

 // Definir configurações da API
 Api::setConfigs('TOKEN_ADMIN', 'http://127.0.0.1/apiwpp/', 'Evolution');
 Api::debug(true); // default true - Para não debugar não chame a função, ou passe false como parametro

 // Define qual instancia irá enviar a mensagem
 Device::setInstance('NOVO_TOKEN_123', 'NOME_INSTANCIA');
 
 Message::type('image');
 Message::phone('551199999999');
 Message::fileUrl('http://umsitequalquer.com/arquivos/imagem.png');
 Message::caption('Um texto anexado a imagem'); // Opcional

 if(Message::send()){
    echo 'Mensagem enviada! <br />';
    echo 'Id: ' . Message::$lastIdMessage;
 }else{
    var_dump(ExceptionError::getMessage());
 }

通过文件 URL 发送文档。

已测试并支持以下格式的文件:zip, xls, pdf, txt, doc, xml, json, ppt, pptx。

未测试其他类型的文件。

<?php 
 
 require_once 'vendor/autoload.php';

 use Apiwpp\Config\Api;
 use Apiwpp\Error\ExceptionError;
 use Apiwpp\Api\Evolution\Device;
 use Apiwpp\Api\Evolution\Message;

 // Definir configurações da API
 Api::setConfigs('TOKEN_ADMIN', 'http://127.0.0.1/apiwpp/', 'Evolution');
 Api::debug(true); // default true - Para não debugar não chame a função, ou passe false como parametro

 // Define qual instancia irá enviar a mensagem
 Device::setInstance('NOVO_TOKEN_123', 'NOME_INSTANCIA');
 
 Message::type('document');
 Message::phone('551199999999');
 Message::fileUrl('http://umsitequalquer.com/arquivos/arquivo.pdf');
 Message::caption('Um texto anexado a imagem'); // Opcional

 if(Message::send()){
    echo 'Mensagem enviada! <br />';
    echo 'Id: ' . Message::$lastIdMessage;
 }else{
    var_dump(ExceptionError::getMessage());
 }

检查 WhatsApp 号码是否存在

该功能还会纠正号码,无论该号码是否使用或未使用第九位数字。

<?php 
 
 require_once 'vendor/autoload.php';

 use Apiwpp\Config\Api;
 use Apiwpp\Api\Evolution\Device;
 use Apiwpp\Api\Evolution\Account;

 // Definir configurações da API
 Api::setConfigs('TOKEN_ADMIN', 'http://127.0.0.1/apiwpp/', 'Evolution');
 Api::debug(true); // default true - Para não debugar não chame a função, ou passe false como parametro

 // Define qual instancia irá ser usado para verificar o número
 // Pode ser o token admin aqui também
 Device::setInstance('NOVO_TOKEN_123_TESTE', 'NOME_INSTANCIA');
 
 Account::checkPhone('551199999999');
 $isWhatsapp = Account::$isWhatsapp;

 if($isWhatsapp){
    echo 'Whatsapp válido: ' . Account::$phoneValid;
 }else{
    echo 'Whatsapp inválido';
 }

 

捕获 WhatsApp 账户的 '留言' 状态

<?php 
 
 require_once 'vendor/autoload.php';

 use Apiwpp\Config\Api;
 use Apiwpp\Api\Evolution\Device;
 use Apiwpp\Api\Evolution\Account;

 // Definir configurações da API
 Api::setConfigs('TOKEN_ADMIN', 'http://127.0.0.1/apiwpp/', 'Evolution');
 Api::debug(true); // default true - Para não debugar não chame a função, ou passe false como parametro

 // Define qual instancia irá ser usado para verificar o número
 // Pode ser o token admin aqui também
 Device::setInstance('NOVO_TOKEN_123_TESTE', 'NOME_INSTANCIA');
 
 Account::detailsAccount('551199999999');

 echo Account::$accountName;
 echo '<br />';
 echo Account::$accountStatus;

捕获个人资料图片

个人资料图片不能是私密的。

如果个人资料图片仅对联系人可见,则在 "setInstance" 传入的设备应位于该用户的联系人列表中。

<?php 
 
 require_once 'vendor/autoload.php';

 use Apiwpp\Config\Api;
 use Apiwpp\Api\Evolution\Device;
 use Apiwpp\Api\Evolution\Account;

 // Definir configurações da API
 Api::setConfigs('TOKEN_ADMIN', 'http://127.0.0.1/apiwpp/', 'Evolution');
 Api::debug(true); // default true - Para não debugar não chame a função, ou passe false como parametro

 // Define qual instancia irá ser usado para verificar o número
 // Pode ser o token admin aqui também
 Device::setInstance('NOVO_TOKEN_123_TESTE', 'NOME_INSTANCIA');

 $profileImg = Account::getImageProfile('5511999999999');

 echo "<img src='{$profileImg}' /> ";