PHP code example of wonittecnologia / interage-sdk-php
1. Go to this page and download the library: Download wonittecnologia/interage-sdk-php library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
wonittecnologia / interage-sdk-php example snippets
onitTecnologia\Interage\Client;
// Domínio do seu tenant (https:// é adicionado automaticamente).
$cli = new Client('SEU-TENANT.wonit.cloud', 'sk_xxxxxxxxxxxx');
$campanhas = $cli->campaigns->list();
foreach ($campanhas->items as $c) {
echo $c->name, ' — ', $c->status, ' — ', $c->totalContacts, PHP_EOL;
}
use WonitTecnologia\Interage\Options;
$cli = new Client('SEU-TENANT.wonit.cloud', 'sk_xxx', new Options(timeout: 10));
use WonitTecnologia\Interage\Enum\CollisionPolicy;
use WonitTecnologia\Interage\Request\CreateCampaignRequest;
$criada = $cli->campaigns->create(new CreateCampaignRequest(
name: 'Black Friday',
instanceId: '<instance_id>', // $cli->messages->listInstances()
templateId: '<gupshup_id>', // $cli->messages->listTemplates()
collisionPolicy: CollisionPolicy::UpdateEmpty,
fileName: 'contatos.csv',
fileContent: file_get_contents('contatos.csv'),
templateParams: ['10%'],
startAt: new DateTimeImmutable('2026-11-27 09:00'),
autoStart: true,
));
// A importação é assíncrona: nasce "pending" e passa a "ready" ao terminar.
echo $criada->campaignId;
use WonitTecnologia\Interage\Enum\CampaignStatus;
$pagina = $cli->campaigns->list(status: CampaignStatus::Running, pageSize: 50);
$campanha = $cli->campaigns->get($id);
$cli->campaigns->start($id); // ready | paused | scheduled → running
$cli->campaigns->pause($id); // running → paused
$cli->campaigns->cancel($id); // → canceled (não reinicia)
$cli->campaigns->delete($id); // não remove em execução/processamento
if (CampaignStatus::tryFrom($campanha->status) === CampaignStatus::Completed) { /* ... */ }
use WonitTecnologia\Interage\Request\SendMessageRequest;
use WonitTecnologia\Interage\Request\SendTemplateRequest;
$instancias = $cli->messages->listInstances();
$templates = $cli->messages->listTemplates(status: 'APPROVED', instanceId: '<instance_id>');
// Template HSM (inicia conversa)
$envio = $cli->messages->sendTemplate(new SendTemplateRequest(
to: '5547999999999',
templateId: '<gupshup_id>',
instanceId: '<instance_id>',
params: ['Maria'],
));
// Mensagem livre, dentro da sessão de 24h de uma conversa ativa
$cli->messages->sendMessage(SendMessageRequest::text('<protocolo>', 'Olá!'));
$cli->messages->sendMessage(SendMessageRequest::media('<protocolo>', 'image', 'https://.../foto.jpg', caption: 'Veja'));
$cli->messages->sendMessage(SendMessageRequest::location('<protocolo>', -26.91, -48.66, 'Loja Centro'));
// Status de entrega
$status = $cli->messages->getMessageStatus($envio->internalMessageId);
echo $status->status, ' ', $status->deliveredAt?->format('d/m H:i');
use WonitTecnologia\Interage\Enum\ConversationStatus;
use WonitTecnologia\Interage\Request\TransferConversationRequest;
$filas = $cli->omni->listQueues();
$agentes = $cli->omni->listAgents();
$conversas = $cli->omni->listConversations(status: ConversationStatus::Queue, channelType: 'whatsapp');
$historico = $cli->omni->getConversationHistory('<protocolo>', pageSize: 50);
$cli->omni->transferConversation('<protocolo>', TransferConversationRequest::toQueue(3));
$cli->omni->transferConversation('<protocolo>', TransferConversationRequest::toUser('<user_id>'));
$cli->omni->closeConversation('<protocolo>');
// Arquivo de uma mensagem do histórico (id da mensagem)
$link = $cli->omni->createMessageFileTempLink($historico->items[0]->id, 3600);
echo $link->url;
$pagina = $cli->contacts->list(search: 'joão', pageSize: 20);
$contato = $cli->contacts->get('<contact_uuid>');
$contato = $cli->contacts->getByPhone('5547999999999'); // NotFoundException se não existir
use WonitTecnologia\Interage\Enum\CollisionPolicy;
use WonitTecnologia\Interage\Request\BatchContactItem;
use WonitTecnologia\Interage\Request\BatchCreateContactsRequest;
use WonitTecnologia\Interage\Request\ContactIdentityInput;
$resultado = $cli->contacts->batchCreate(new BatchCreateContactsRequest(
contacts: [
new BatchContactItem(
name: 'João da Silva',
identities: [ContactIdentityInput::whatsapp('5511999998888', isPrimary: true)],
email: '[email protected] ',
customInfo: ['codigo_cliente' => 'C-123'],
labels: [1, 3], // números das etiquetas, não os nomes
),
],
collisionPolicy: CollisionPolicy::Ignore,
));
foreach ($resultado->items as $item) {
if ($item->status === 'error') {
echo "Contato #{$item->index}: {$item->message}", PHP_EOL;
}
}
use WonitTecnologia\Interage\Request\OriginateCallRequest;
$ramais = $cli->telephony->listExtensions(search: '10');
$historico = $cli->telephony->listCallHistory(
dateFrom: new DateTimeImmutable('2026-09-01'),
dateTo: new DateTimeImmutable('2026-09-30'), // período de no máximo 3 meses
callResult: 'ANSWERED',
);
$ativas = $cli->telephony->listActiveCalls();
$chamada = $cli->telephony->originateCall(new OriginateCallRequest('1000', '5547999999999'));
$gravacao = $cli->telephony->createRecordingTempLink('<call_id>', 3600);
$cursor = null;
do {
$pagina = $cli->contacts->list(pageSize: 100, cursor: $cursor);
foreach ($pagina->items as $contato) {
echo $contato->name, PHP_EOL;
}
$cursor = $pagina->nextCursor;
} while ($cursor !== null);
use WonitTecnologia\Interage\Exception\ApiException;
use WonitTecnologia\Interage\Exception\ForbiddenException;
use WonitTecnologia\Interage\Exception\NotFoundException;
use WonitTecnologia\Interage\Exception\TooManyRequestsException;
try {
$campanha = $cli->campaigns->get($id);
} catch (NotFoundException) {
// campanha não existe
} catch (ForbiddenException $e) {
// token válido, mas sem permissão para esta rota/ação
} catch (TooManyRequestsException $e) {
sleep($e->retryAfter ?? 1);
$campanha = $cli->campaigns->get($id);
} catch (ApiException $e) {
error_log("{$e->statusCode} {$e->apiStatus}: {$e->apiMessage}");
}
bash
composer