PHP package to easily interact with waapi.app.
composer require waapi/waapi-php-sdkuse WaAPI\WaAPISdk\WaAPISdk;
$apiToken = 'xxxxxxxxxxxxxxxxxxxxxx';
$sdk = new WaAPISdk($apiToken);$isAvailable = $sdk->isApiAvailable();// Create a basic instance
$instance = $sdk->createInstance();
$instanceId = $instance->id;
// Create an instance with a name and webhook
$instance = $sdk->createInstance(
name: 'My Instance',
webhookUrl: 'https://my.url.com/webhook/handler',
webhookEvents: ['message', 'ready', 'qr']
);$instanceId = 10; //you need to know your instance id at this point
$instance = $sdk->getInstance($instanceId);$instanceId = 10; //you need to know your instance id at this point
//if a subscribed event occurs, this url will be requested with the event data
//can also be null if you do not want to receive webhooks
$webhookUrl = '';
$subscribedEvents = ['', '']; //can also be null or an empty array
$sdk->updateInstance($instanceId, $webhookUrl, $subscribedEvents);
// You can also update the instance name
$sdk->updateInstance($instanceId, name: 'New Name');
//if you have an instance object, you can also use the following method
$instance = $sdk->getInstance($instanceId);
$instance->update($webhookUrl, $subscribedEvents);$instanceId = 10; //you need to know your instance id at this point
$sdk->deleteInstance($instanceId);
//if you have an instance object, you can also use the following method to delete this instance
$instance = $sdk->getInstance($instanceId);
$instance->delete();After creating a new instance, you need to connect your WhatsApp phone number with this instance. With the following code, you are able to receive the current QR-Code.
$instanceId = 10; //you need to know your instance id at this point
$response = $sdk->getInstanceClientQrCode($instanceId);
//if you have an instance object, you can also use the convenience method
$instance = $sdk->getInstance($instanceId);
$response = $instance->clientQrCode();
// The QR code as a base64 image string (data:image/png;base64,…).
// Set this string in the src attribute of a <img src=””> html tag.
$qrCode = $response->qrCode;An instance always has a status.
| Status | Description |
|---|---|
| booting | The node is starting the instance. The status will change to loading_screen soon. |
| loading_screen | The instance is starting WhatsApp Web. The status will change to qr or ready soon. |
| qr | The instance needs to be connected with a WhatsApp phone number. You can fetch the QR code now. |
| authenticated | The connection via the QR code was successful. The status will change to ready soon. |
| auth_failure | The connection via the QR code failed or WhatsApp Web is down. |
| ready | The instance is ready to use. You are able to execute actions and send messages. |
| disconnected | Disconnected from WhatsApp Web |
$instanceId = 10; //you need to know your instance id at this point
$response = $sdk->getInstanceClientStatus($instanceId);
//if you have an instance object, you can also use the convenience method
$instance = $sdk->getInstance($instanceId);
$response = $instance->clientStatus();
$instanceStatus = $response->instanceStatus;$instanceId = 10; //you need to know your instance id at this point
$response = $sdk->getInstanceClientInfo($instanceId);
//if you have an instance object, you can also use the convenience method
$instance = $sdk->getInstance($instanceId);
$response = $instance->clientInfo();
//your public name of your WhatsApp profile (your name)
$displayName = $response->displayName;
//the connected WhatsApp phone number (your phone number)
$phoneNumber = $response->formattedNumber;
//profile image url of the connected WhatsApp phone number (your profile picture)
$profileUrl = $response->profilePicUrl;
//a unique identifier for your WhatsApp account / profile / phone number
$whatsAppId = $response->contactId;Once your instance is in ready state, you can execute WhatsApp actions:
$instanceId = 10;
// Send a text message
$result = $sdk->executeInstanceAction($instanceId, 'send-message', [
'chatId' => '491234567890@c.us',
'message' => 'Hello from waapi!',
]);
// Send media
$result = $sdk->executeInstanceAction($instanceId, 'send-media', [
'chatId' => '491234567890@c.us',
'mediaUrl' => 'https://example.com/image.png',
'mediaCaption' => 'Check this out!',
]);
// Using the instance object
$instance = $sdk->getInstance($instanceId);
$result = $instance->executeClientAction('send-message', [
'chatId' => '491234567890@c.us',
'message' => 'Hello!',
]);Common actions: send-message, send-media, send-location, send-vcard, get-chats, get-contacts, get-contact-by-id, is-registered-user, get-number-id, send-seen, logout, reboot.
For a full list of available actions and their parameters, see the API documentation.
When configuring webhooks, use the WebhookEvent class for available event constants:
use WaAPI\WaAPISdk\Resources\WebhookEvent;
$sdk->createInstance(
name: 'My Instance',
webhookUrl: 'https://my.url.com/webhook',
webhookEvents: [
WebhookEvent::MESSAGE,
WebhookEvent::READY,
WebhookEvent::QR,
WebhookEvent::DISCONNECTED,
]
);
// Subscribe to all events
$sdk->createInstance(
name: 'My Instance',
webhookUrl: 'https://my.url.com/webhook',
webhookEvents: WebhookEvent::ALL
);| Event | Description |
|---|---|
message |
Fired when you receive a message |
message_create |
New message created (sent and received) |
message_edit |
A message was edited |
message_ack |
Message was read or received |
message_reaction |
Reaction sent, received, updated or removed |
message_revoke_everyone |
Message deleted for everyone |
message_revoke_me |
Message deleted for you only |
media_uploaded |
Media file uploaded successfully |
qr |
New QR code available |
authenticated |
Connection successfully established |
auth_failure |
Authentication failed |
ready |
Instance is ready to use |
disconnected |
Instance was disconnected |
loading_screen |
Instance is loading data |
change_state |
Connection status changed |
group_join |
Someone joined or was added to a group |
group_leave |
Someone left or was removed from a group |
group_update |
Group information was updated |
call |
Incoming call (cannot be handled by API) |
vote_update |
Poll vote was updated or removed |
The MIT License (MIT). Please see License File for more information.