PHP code example of ziming / laravel-crisp-whatsapp
1. Go to this page and download the library: Download ziming/laravel-crisp-whatsapp 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/ */
ziming / laravel-crisp-whatsapp example snippets
declare(strict_types=1);
return [
'website_id' => env('CRISP_WEBSITE_ID'),
'base_url' => env('CRISP_BASE_URL', 'https://plugins.crisp.chat/urn:crisp.im:whatsapp:0/wa/api/website/'),
'access_key_id' => env('CRISP_WHATSAPP_ACCESS_KEY_ID'),
'secret_access_key' => env('CRISP_WHATSAPP_SECRET_ACCESS_KEY'),
'from_phone' => env('CRISP_WHATSAPP_FROM_PHONE'),
// change it to false when you are ready for production
'test_mode' => env('CRISP_WHATSAPP_TEST_MODE', true),
// when test_mode is true, all whatsapp notifications will go to this number
'to_test_phone' => env('CRISP_WHATSAPP_TO_TEST_PHONE'),
'enable_caching' => env('CRISP_WHATSAPP_ENABLE_CACHE', true),
];
declare(strict_types=1);
use \Illuminate\Http\Client\ConnectionException;
use Ziming\LaravelCrispWhatsApp\Enums\ParameterTypeEnum;
use Ziming\LaravelCrispWhatsApp\CrispWhatsAppChannel;
use Ziming\LaravelCrispWhatsApp\Enums\ParameterTypeEnum;
use Ziming\LaravelCrispWhatsApp\CrispWhatsAppMessage;
use Ziming\LaravelCrispWhatsApp\Interfaces\CrispWhatsAppNotification;
use Ziming\LaravelCrispWhatsApp\CanReceiveCrispWhatsAppNotification;
use Ziming\LaravelCrispWhatsApp\Factories\ComponentParameterFactory;
use Ziming\LaravelCrispWhatsApp\Factories\ComponentFactory;
use Ziming\LaravelCrispWhatsApp\Enums\ButtonSubTypeEnum;
use Ziming\LaravelCrispWhatsApp\LaravelCrispWhatsApp;
use Ziming\LaravelCrispWhatsApp\Facades\LaravelCrispWhatsApp as LaravelCrispWhatsAppFacade;
class OrderShippedNotification extends Notification implements CrispWhatsAppNotification
{
use Queueable;
public function via(CanReceiveCrispWhatsAppNotification $notifiable): array
{
return [
CrispWhatsAppChannel::class;
];
}
/**
* @throws ConnectionException
*/
public function toCrispWhatsApp(CanReceiveCrispWhatsAppNotification $notifiable): CrispWhatsAppMessage
{
$templateArray = LaravelCrispWhatsAppFacade::getMessageTemplateArray('hello_world');
return CrispWhatsAppMessageFactory::createFromTemplateArray(
$templateArray,
[
ComponentParameterFactory::text('Crispy Fries'),
],
);
}
}
declare(strict_types=1);
use \Illuminate\Http\Client\ConnectionException;
use Ziming\LaravelCrispWhatsApp\Enums\ParameterTypeEnum;
use Ziming\LaravelCrispWhatsApp\CrispWhatsAppChannel;
use Ziming\LaravelCrispWhatsApp\Enums\ParameterTypeEnum;
use Ziming\LaravelCrispWhatsApp\CrispWhatsAppMessage;
use Ziming\LaravelCrispWhatsApp\Interfaces\CrispWhatsAppNotification;
use Ziming\LaravelCrispWhatsApp\CanReceiveCrispWhatsAppNotification;
use Ziming\LaravelCrispWhatsApp\Factories\ComponentParameterFactory;
use Ziming\LaravelCrispWhatsApp\Factories\ComponentFactory;
use Ziming\LaravelCrispWhatsApp\Enums\ButtonSubTypeEnum;
use Ziming\LaravelCrispWhatsApp\LaravelCrispWhatsApp;
use Ziming\LaravelCrispWhatsApp\Facades\LaravelCrispWhatsApp as LaravelCrispWhatsAppFacade;
class OrderShippedNotification extends Notification implements CrispWhatsAppNotification
{
use Queueable;
public function via(CanReceiveCrispWhatsAppNotification $notifiable): array
{
return [
CrispWhatsAppChannel::class;
];
}
/**
* @throws ConnectionException
*/
public function toCrispWhatsApp(CanReceiveCrispWhatsAppNotification $notifiable): CrispWhatsAppMessage
{
// See the source code for more methods on CrispWhatsAppMessage!
$crispMessages = []
// Example 1
$crispMessages[] = CrispWhatsAppMessage::make()
->templateLanguage('en')
->toNumber($notifiable->mobile_phone)
->templateName('template-name')
->addTemplateBodyComponent(
LaravelCrispWhatsApp::make()->getMessageTemplateBodyText('template-name'),
[
ComponentParameterFactory::text('Crisp'),
]
)
->addTemplateFooterComponent(
// you may use the facade as well!
LaravelCrispWhatsAppFacade::getMessageTemplateFooterText('template-name')
)
->addTemplateButtonComponent('CTA', ButtonSubTypeEnum::Url)
->addTemplateButtonComponent('Not interested anymore');
// Example 2
$crispMessages[] = CrispWhatsAppMessage::make()
->rawMessageTemplate([
'language' => 'en_US',
'name' => 'hello_world',
'components' => [
[
'type' => 'HEADER',
'FORMAT' => 'TEXT',
'text' => 'Hello World',
],
[
'type' => 'BODY',
'text' => 'This is a body text',
],
[
'type' => 'FOOTER',
'text' => 'This is a footer text',
],
],
]);
// Example 3
$crispMessages[] => CrispWhatsAppMessage::make()
->templateLanguage('en')
->toNumber($notifiable->mobile_phone)
->rawTemplateComponents([
ComponentFactory::headerText('Order #12345'),
ComponentFactory::body('{{1}} the Builder', ComponentParameterFactory::text('Crisp')),
ComponentFactory::button('Call To Action', ButtonSubTypeEnum::Url)
ComponentFactory::button('No', ButtonSubTypeEnum::QuickReply)
ComponentFactory::footer('This is the footer of your whatsapp template'),
]);
return $crispMessages[random_int(0, 2)];
}
}
use Illuminate\Database\Eloquent\Model;
use Ziming\LaravelCrispWhatsApp\Interfaces\CanReceiveCrispWhatsAppNotification;
class User extends Model implements CanReceiveCrispWhatsAppNotification
{
public function routeNotificationForCrispWhatsApp(): string
{
return $this->attributes['mobile_phone'];
}
}