/wppconnect-php-client

Um simples cliente PHP que proporciona acesso fácil aos endpoints do WPPConnect Server.

Primary LanguagePHPApache License 2.0Apache-2.0

WPPConnect Team

Wppconnect PHP Client

Um simples cliente PHP que proporciona acesso fácil aos endpoints do WPPConnect Server.

Nossos canais online

Discord Telegram Group WhatsApp Group YouTube

Requisitos

  • PHP 7.4 ou superior.
  • PHP Zip Extension

Instalação

composer require wppconnect-team/wppconnect-php-client

Uso

Request

namespace WPPConnect;

require '../../vendor/autoload.php';

use WPPConnect\Http\Request;
use WPPConnect\Helpers\Util;

$wppconnect = new Request([
    'base_url' => 'http://localhost:8081',
    'secret_key' => 'MYKeYPHP',
    'session' => 'mySession',
    'token' => null
]);
$util = new Util();
# Function: Generated Token
# /api/:session/generate-token
$response = $wppconnect->generateToken();
$response = $util->toArray($response);
if (isset($response['status']) and $response['status'] == 'success') :
   $wppconnect->options['token'] = $response['token'];
endif;
#debug
$util->debug($response);
# Function: Start Session
# /api/:session/start-session
$response = $wppconnect->startSession([
   'webhook' => null,
   'waitQrCode' => true
]);
$response = $wppconnect->toArray($response);
#debug
$util->debug($response);
# Function: Check Connection Session
# /api/:session/check-connection-session
$response = $wppconnect->checkConnectionSession([);
$response = $wppconnect->toArray($response);
#debug
$util->debug($response);
# Function: Send Message
# /api/:session/send-message    
$response = $wppconnect->sendMessage([
   'phone' => '5500000000000',
   'message' => 'Opa, funciona mesmo!',
   'isGroup' => false
]);
$response = $wppconnect->toArray($response);
#debug
$util->debug($response);
# Function: Send File Base64
# /api/:session/send-file-base64 
$response = $wppconnect->sendFileBase64([
   'phone' => '5500000000000',
   'filename' => 'Xpto',
   'base64' => $wppconnect->fileToBase64('xpto.jpg'),
   'isGroup' => false
]);
$response = $wppconnect->toArray($response);
#debug
$util->debug($response);
# Function: Send Link Preview
# /api/:session/send-link-preview
$response = $wppconnect->sendLinkPreview([
    'phone' => '5500000000000',
    'url' => 'https://github.com/wppconnect-team',
    'caption' => 'WppConnectTeam',
    'isGroup' => false
]);
$response = $wppconnect->toArray($response);
#debug
$util->debug($response);
# Function: Send Location
# /api/:session/send-location 
$response = $wppconnect->sendLocation([
   'phone' => '5500000000000',
   'lat' => '-23.5489',
   'lng' => '-46.6388',
   'title' => 'Cidade de São Paulo'
   'isGroup' => false
]);
$response = $wppconnect->toArray($response);
#debug
$util->debug($response);

Response (Webhook)

Exemplo de webhook para registrar/obter a solicitação/respostas do webhook WPPConnect.

namespace WPPConnect;

use WPPConnect\Http\Response;
use WPPConnect\Helpers\Util;

require '../../vendor/autoload.php';

$config = require_once('../config/config.php');
$webhook = new Response($config);
$util = new Util();
# QRCode
if ($webhook->getEvent() == 'qrcode') :
    'File: ' .
        $util->base64ToFile($webhook->getQrcode(), 'image/png', $webhook->getFilesFolder());
    die;
endif;
# Message
if ($webhook->getEvent() == 'onmessage' and $webhook->getType() == 'chat') :
    echo '
        Content: ' . $webhook->getContent() . ' 
        Date: ' . $webhook->getDate() . ' 
        From: ' . $webhook->getFrom() . '
        To: ' . $webhook->getTo();
    die;
endif;
# File: Audio / Imagem / Arquivo / Video / Sticker
if (
    $webhook->getEvent() == 'onmessage' and
    (
        $webhook->getType() == 'ptt' or
        $webhook->getType() == 'image' or
        $webhook->getType() == 'document' or
        $webhook->getType() == 'video' or
        $webhook->getType() == 'sticker'

    )
) :
    echo '
        File: ' .
        $util->base64ToFile(
            $webhook->getBody(),
            $webhook->getMimetype(),
            $webhook->getFilesFolder()
        )        . ' 
        Date: ' . $webhook->getDate() . ' 
        From: ' . $webhook->getFrom() . '
        To: ' . $webhook->getTo();
    die;
endif;

Funções para uso do Banco de Dados (SQLite, MySQL e Postgres)

namespace WPPConnect;

use WPPConnect\Db\Adapter;
use WPPConnect\Helpers\Util;

require '../../vendor/autoload.php';

$config = require_once('../config/config.php');

#SQLite
#$adapter = new Adapter($config, 'sqlite');

#Postgres
#$adapter = new Adapter($config, 'postgres');

#MySQL - Default
$adapter = new Adapter($config);
$util = new Util() ;
#Connect
$adapter->connect();

#Disconnect
$adapter->disconnect();
#Create Table
$adapter->createTable('mensagem', [
    'id' => 'serial PRIMARY KEY', // use INTEGER instead of SERIAL on sqlite to get auto ids
    'session' => 'varchar(255)',
    'content' => 'varchar(255)'
]);

#Insert
$adapter->insert('mensagem', ['session' => 'MySessionName', 'content' => 'MyContent']);

#Update
$adapter->update('mensagem', ['content' => 'MyContent_Edit'], ['id' => 1]);

#Delete
$adapter->delete('mensagem', ['id' => 1]);

#Truncate Table
$adapter->truncateTable('mensagem');

#Drop Table
$adapter->dropTable('mensagem');

#Get All Tables
$adapter->getAllTables();

#Fetch
$adapter->fetchAll('mensagem', ['id', 'content'], ['id' => 1], [], [], ['id'], 'ASC', 3);
$adapter->fetchAll('mensagem');
$adapter->fetchRow('mensagem', [], [], [], [], ['id'], 'ASC');

#Exec / Query
$adapter->exec('SELECT * FROM mensagem WHERE id = 1');
$adapter->query('SELECT * FROM mensagem WHERE id = ?', 1);

#Others
$adapter->count('mensagem');
$adapter->getColumns('mensagem');
$adapter->hasTable('mensagem');
$adapter->hasColumn('mensagem', 'id');
$adapter->getColumnDatatype('mensagem', 'id');
$adapter->getPrimaryKey('mensagem');

#Foreign Keys
$adapter->getForeignKeys('session');
$adapter->getForeignTablesOut('session');
$adapter->getForeignTablesIn('mensagem');
$adapter->isForeignKey('session', 'id');

#Debug Query
$adapter->debugQuery("SELECT * FROM mensagem WHERE id = ? or id = ?", [1, 2]);

Funções/Métodos Suportados (até este momento)

Este cliente PHP ainda está em desenvolvimento. Veja aqui todos os endpoints do WPPConnect Server.

Token

  • generateToken([:session,:secret_key])

Session

  • startAll([:secret_key,:token])
  • showAllSessions([:session,,:token]);
  • startSession([:session,:token,:webhook,:waitQrCode]);
  • closeSession([:session,:token]);
  • logoutSession([:session,:token]);
  • checkConnectionSession([:session,:token]);
  • statusSession([:session,:token]);
  • qrcodeSession([:session,:token]);

Mensagem

  • sendMessage([:session,:token,:phone,:message,:isGroup]);
  • sendReply([:session,:token,:phone,:message,:messageId,:isGroup]);
  • sendFileBase64([:session,:token,:phone,:filename:base64:isGroup]);
  • sendStatus([:session,:token,:message,:isGroup]);
  • sendLinkPreview([:session,:token,:phone,:url,:caption,:isGroup]);
  • sendLocation([:session,:token,:phone,:lat,:lng,:title,:isGroup]);
  • sendMentioned([:session,:token,:phone,:message,:mentioned,:isGroup]);
  • sendButtons([:session,:token,:phone,:message,:title,:footer,:buttons]);

Grupo

  • createGroup([:session,:token,:participants[:phone,:phone,...],:name]);
  • leaveGroup([:session,:token,:groupId]);
  • joinCode([:session,:token,:inviteCode]);
  • groupMembers([:session,:token,:groupId]);
  • addParticipantGroup([:session,:token,:groupId,:phone]);
  • removeParticipantGroup([:session,:token,:groupId,:phone,]);
  • promoteParticipantGroup([:session,:token,:groupId,:phone]);
  • demoteParticipantGroup([:session,:token,:groupId,:phone]);
  • groupAdmins([:session,:token,:groupId]);
  • groupInviteLink([:session,:token,:groupId]);
  • groupRevokeLink([:session,:token,:groupId]);
  • allGroups([:session,:token]);
  • groupInfoFromInviteLink([:session,:token,:inviteCode]);
  • groupMembersIds([:session,:token,:groupId]);
  • groupDescription([:session,:token,:groupId,:description]);
  • groupProperty([:session,:token,:groupId,:property,:value]);
  • groupSubject([:session,:token,:groupId,:title]);
  • messagesAdminsOnly([:session,:token,:groupId,:value]);

Chat

  • archiveChat([:session,:token,:phone,:isGroup]);
  • clearChat([:session,:token,:phone,:isGroup]);
  • deleteChat([:session,:token,:phone]);
  • deleteMessage([:session,:token,:phone,:messageId]);
  • forwardMessages([:session,:token,:phone,:messageId]);
  • allChats([:session,:token]);
  • allChatsWithMessages([:session,:token]);
  • allMessagesInChat([:session,:token,:phone]);
  • allNewMessages([:session,:token,:phone]);
  • unreadMessages([:session,:token]);
  • allUnreadMessages([:session,:token]);
  • chatById([:session,:token,:phone]);
  • chatIsOnline([:session,:token,:phone]);
  • lastSeen([:session,:token,:phone]);
  • listMutes([:session,:token,:type]);
  • loadMessagesInChat([:session,:token,:phone]);
  • markUnseen([:session,:token,:phone]);
  • pinChat([:session,:token,:phone,:state,:isGroup]);
  • contactVcard([:session,:token,:phone,:contactsId]);
  • sendMute([:session,:token,:phone,:time,:type]);
  • sendSeen([:session,:token,:phone]);
  • chatState([:session,:token,:phone,:chatstate]);
  • typing([:session,:token,:phone,:value,:isGroup]);
  • starMessage([:session,:token,:messageId,:star]);
  • getMediaByMessage([:session,:token,:messageId]);

Contatos

  • checkNumberStatus([:session,:token,:phone]);
  • allContacts([:session,:token]);
  • contact([:session,:token,:phone]);
  • profile([:session,:token,:phone,]);
  • profilePic([:session,:token,:phone]);
  • profileStatus([:session,:token,:phone]);
  • blockContact([:session,:token,:phone]);
  • unblockContact([:session,:token,:phone]);
  • blocklist([:session,:token]);
  • setProfileStatus([:session,:token,:status]);
  • changeUsername([:session,:token,:name]);

Device

  • getBatteryLevel([:session,:token]);
  • hostDevice([:session,:token]);

Outros

  • allBroadcastList([:session,:token]);
  • subscribePresence([:session,:token,:isGroup,:all]);
  • killServiceWorkier([:session,:token]);
  • restartService([:session,:token]);

Tutórial de Uso com Docker

Acesse o tutorial de como utilizar o PHP Client com Docker no nosso Canal do Youtube: https://www.youtube.com/watch?v=o_TBIyxFbNI

Postman

Acesse o Postman Collection do WPPConnect com todos os endpoints.