Wrapper de API para API de e-mail inteligente.
Requisitos
Este pacote requer PHP 7.4 e superior.
Instalar via compositor
composer require pion/smart-emailing-v3
Crie uma instância da API com seu nome de usuário e apiKey.
use SmartEmailing v3 Api ;
. . .
$ api = new Api ( ' username ' , ' api-key ' );
em seguida, use $api
com o método/componente desejado.
// Creates a new instance
$ api -> importRequest ()-> addContact ( new Contact ( ' [email protected] ' ))-> send ();
ou
// Creates a new instance
$ import = $ api -> importRequest ();
$ contact = new Contact ( ' [email protected] ' );
$ contact -> setName ( ' Martin ' )-> setNameDay ( ' 2017-12-11 11:11:11 ' );
$ import -> addContact ( $ contact );
// Create new contact that will be inserted in the contact list
$ contact2 = $ import -> newContact ( ' [email protected] ' );
$ contact2 -> setName ( ' Test ' );
// Create new contact that will be inserted in the contact list
$ import -> newContact ( ' [email protected] ' )-> setName ( ' Test ' );
$ import -> send ();
Ao enviar qualquer solicitação você pode capturar a exceção de erro RequestException
.
use SmartEmailing v3 Exceptions RequestException ;
try {
$ api -> ping ();
} catch ( RequestException $ exception ) {
$ exception -> response (); // to get the real response, will hold status and message (also data if provided)
$ exception -> request (); // Can be null if the request was 200/201 but API returned error status text
}
A importação contém 2 pontos de dados principais:
$import->settings()->setUpdate(true)
$import->newContact() : Contact
, $import->contacts() : array
e $import->addContact($contact) : self
Um exemplo de uso está acima.
A importação contém três pontos de dados principais:
$contact->customFields()
para adicionar novos campos$contact->contactLists()
para adicionar nova lista de contatosVeja o código fonte para todos os métodos/propriedades que você pode usar
Usa um detentor de dados com métodos create
/ add
/ get
/ isEmpty
/ toArray
/ jsonSerialize
.
$ field = $ contact -> customFields ()-> create ( 12 , ' test ' )
$ list = $ contact -> contactLists ()-> create ( 12 , ' confirmed ' )
A importação contém 2 pontos de dados principais:
$import->settings()->setSkipInvalidOrders(true)
$import->newOrder() : Order
, $import->orders() : array
e $import->addOrder($order) : self
Um exemplo de uso está acima.
O customFields usa um wrapper para cada solicitação relacionada a campos personalizados. Para criar uma nova instância, chame $api->customFields()
. Neste objeto você pode criar qualquer solicitação que esteja implementada atualmente. Veja abaixo.
Maneira rápida de criar uma solicitação com o customField necessário
use SmartEmailing v3 Models CustomFieldDefinition ;
. . .
// Create the new customField and send the request now.
$ customField = new CustomFieldDefinition ( ' test ' , CustomFieldDefinition:: TEXT );
$ data = $ api -> customFields ()-> create ( $ customField );
// Get the customField in data
$ customFieldId = $ data -> id ;
ou
$ request = $ api -> customFields ()-> createRequest (); // You can pass the customField object
// Setup customField
$ customField = new CustomField ();
$ request -> setCustomField ( $ customField );
// Setup data
$ customField -> setType (CustomField:: RADIO )-> setName ( ' test ' );
// Send the request
$ response = $ request -> send ();
$ data = $ response -> data ();
$ customFieldId = $ data -> id ;
DOCUMENTOS DE API
Permite a pesquisa em campos personalizados com suporte de filtro/classificação. Os resultados são limitados a 100 por página. A resposta retorna metadados (MetaDataInterface) e uma matriz de ModelsCustomFieldDefinition
chamando $response->data()
.
ModelsCustomFieldDefinition
stdClass
com propriedades (definidas em MetaDataInterface
) Cria uma solicitação de pesquisa e configura apenas $page
ou $limit
. A resposta completa da API com customfield_options_url
ou
$ data = $ api -> customFields ()-> list ();
/** @var SmartEmailingv3ModelsCustomFieldDefinition $customField */
foreach ( $ data as $ customField ) {
echo $ customField -> id ;
echo $ customField -> name ;
echo $ customField -> type ;
}
$ request = $ api -> customFields ()-> searchRequest ( 1 );
// Search by name
$ request -> filter ()-> byName ( ' test ' );
$ request -> sortBy ( ' name ' );
// Send the request
$ response = $ request -> send ();
$ data = $ response -> data ();
filter()
retorna uma configuração de Filtros - mais abaixo Usando este parâmetro, a propriedade "customfield_options_url" será substituída por "customfield_options" contendo dados expandidos. Veja os exemplos abaixo Para obter mais informações, consulte o endpoint "/customfield-options".
Valores permitidos: "customfield_options"
Lista separada por vírgulas de propriedades a serem selecionadas. por exemplo. "?select=id,name" Se não for fornecido, todos os campos serão selecionados.
Valores permitidos: "id", "nome", "tipo"
Lista separada por vírgulas de chaves de classificação do lado esquerdo. Anexe "-" a qualquer tecla para direção de descrição, por exemplo. "?sort=tipo,-nome"
Valores permitidos: "id", "nome", "tipo"
Define a página atual
Define o limite do resultado em uma única consulta
Permite filtrar campos personalizados com múltiplas condições de filtro.
Executa uma consulta de pesquisa com filtro de nome e verifica se o nome fornecido é encontrado em customFields. Retorna false
ou CustomFieldsCustomField
. Usa lógica de envio (lança RequestException).
// Can throw RequestException - uses send.
if ( $ customField = $ api -> customFields ()-> getByName ( ' name ' )) {
return $ customField -> id ;
} else {
throw new Exception ( ' Not found! ' , 404 );
}
A implementação da chamada de API send/transactional-emails-bulk
: https://app.smartemailing.cz/docs/api/v3/index.html#api-Custom_campaigns-Send_transactional_emails
$ transactionEmail = $ api -> transactionalEmailsRequest ();
$ credentials = new SenderCredentials ();
$ credentials -> setFrom ( ' [email protected] ' );
$ credentials -> setReplyTo ( ' [email protected] ' );
$ credentials -> setSenderName ( ' Jean-Luc Picard ' );
$ recipient = new Recipient ();
$ recipient -> setEmailAddress ( ' [email protected] ' );
$ replace1 = new Replace ();
$ replace1 -> setKey ( ' key1 ' );
$ replace1 -> setContent ( ' content1 ' );
$ replace2 = new Replace ();
$ replace2 -> setKey ( ' key2 ' );
$ replace2 -> setContent ( ' content2 ' );
$ templateVariable = new TemplateVariable ();
$ templateVariable -> setCustomData ([
' foo ' => ' bar ' ,
' products ' => [
[ ' name ' => ' prod1 ' , ' desc ' => ' desc1 ' ],
[ ' name ' => ' prod1 ' , ' desc ' => ' desc2 ' ]
]
]);
$ attachment1 = new Attachment ();
$ attachment1 -> setContentType ( ' image/png ' );
$ attachment1 -> setFileName ( ' picture.png ' );
$ attachment1 -> setDataBase64 ( ' data1 ' );
$ attachment2 = new Attachment ();
$ attachment2 -> setContentType ( ' image/gif ' );
$ attachment2 -> setFileName ( ' sun.gif ' );
$ attachment2 -> setDataBase64 ( ' data2 ' );
$ task = new Task ();
$ task -> setRecipient ( $ recipient );
$ task -> addReplace ( $ replace1 );
$ task -> addReplace ( $ replace2 );
$ task -> setTemplateVariables ( $ templateVariable );
$ task -> addAttachment ( $ attachment1 );
$ task -> addAttachment ( $ attachment2 );
$ messageContents = new MessageContents ();
$ messageContents -> setTextBody ( ' text_body ' );
$ messageContents -> setHtmlBody ( ' html_body ' );
$ messageContents -> setSubject ( ' subject ' );
$ transactionEmail -> setTag ( ' tag_tag ' );
$ transactionEmail -> setEmailId ( 5 );
$ transactionEmail -> setSenderCredentials ( $ credentials );
$ transactionEmail -> addTask ( $ task );
$ transactionEmail -> setMessageContents ( $ messageContents );
$ transactionEmail -> send ();
A implementação da chamada de API send/custom-emails-bulk
: https://app.smartemailing.cz/docs/api/v3/index.html#api-Custom_campaigns-Send_bulk_custom_emails
$ transactionEmail = $ api -> customEmailsBulkRequest ();
$ credentials = new SenderCredentials ();
$ credentials -> setFrom ( ' [email protected] ' );
$ credentials -> setReplyTo ( ' [email protected] ' );
$ credentials -> setSenderName ( ' Jean-Luc Picard ' );
$ recipient = new Recipient ();
$ recipient -> setEmailAddress ( ' [email protected] ' );
$ replace1 = new Replace ();
$ replace1 -> setKey ( ' key1 ' );
$ replace1 -> setContent ( ' content1 ' );
$ replace2 = new Replace ();
$ replace2 -> setKey ( ' key2 ' );
$ replace2 -> setContent ( ' content2 ' );
$ templateVariable = new TemplateVariable ();
$ templateVariable -> setCustomData ([
' foo ' => ' bar ' ,
' products ' => [
[ ' name ' => ' prod1 ' , ' desc ' => ' desc1 ' ],
[ ' name ' => ' prod1 ' , ' desc ' => ' desc2 ' ]
]
]);
$ task = new Task ();
$ task -> setRecipient ( $ recipient );
$ task -> addReplace ( $ replace1 );
$ task -> addReplace ( $ replace2 );
$ task -> setTemplateVariables ( $ templateVariable );
$ transactionEmail -> setTag ( ' tag_tag ' );
$ transactionEmail -> setEmailId ( 5 );
$ transactionEmail -> setSenderCredentials ( $ credentials );
$ transactionEmail -> addTask ( $ task );
$ transactionEmail -> send ();
A implementação da chamada de API send/custom-sms-bulk
: https://app.smartemailing.cz/docs/api/v3/index.html#api-Custom_campaigns-Send_bulk_custom_SMS
$ bulkCustomSms = $ api -> customSmsBulkRequest ();
$ recipient = new Recipient ();
$ recipient -> setEmailAddress ( ' [email protected] ' );
$ recipient -> setCellphone ( ' +420777888777 ' );
$ replace1 = new Replace ();
$ replace1 -> setKey ( ' key1 ' );
$ replace1 -> setContent ( ' content1 ' );
$ replace2 = new Replace ();
$ replace2 -> setKey ( ' key2 ' );
$ replace2 -> setContent ( ' content2 ' );
$ task = new Task ();
$ task -> setRecipient ( $ recipient );
$ task -> addReplace ( $ replace1 );
$ task -> addReplace ( $ replace2 );
$ bulkCustomSms -> setTag ( ' tag_tag ' );
$ bulkCustomSms -> setSmsId ( 5 );
$ bulkCustomSms -> addTask ( $ task );
$ bulkCustomSms -> send ();
Consulte UPGRADE.md para saber como atualizar para versões mais recentes.
Consulte CONTRIBUTING.md para saber como contribuir com alterações. Todas as contribuições são bem-vindas.
smart-emailing-v3 foi escrito por Martin Kluska e é lançado sob a licença MIT.
Copyright (c) 2016 - 2022 Martin Kluska e colaboradores