Skip to content

Send API

Romain Monteil edited this page Mar 19, 2017 · 11 revisions

Send API

Send a simple message:

$messenger->send()->message(<USER_ID>, 'Hello world!');

Send a message with quick replies:

use Kerox\Messenger\Model\Message;
use Kerox\Messenger\Model\Message\QuickReply;

$message = new Message('Pick a color:');
$message
    ->setQuickReplies([
        (new QuickReply('text'))
            ->setTitle('Red')
            ->setPayload('DEVELOPER_DEFINED_PAYLOAD_FOR_PICKING_RED')
            ->setImageUrl('http://petersfantastichats.com/img/red.png'),
        (new QuickReply('text'))
            ->setTitle('Green')
            ->setPayload('DEVELOPER_DEFINED_PAYLOAD_FOR_PICKING_GREEN')
            ->setImageUrl('http://petersfantastichats.com/img/green.png')
    ])
    ->addQuickReply(new QuickReply('location'))
    ->setMetadata('some metadata');
    
$messenger->send()->message(<USER_ID>, $message);

Send a message with a receipt

use Kerox\Messenger\Model\Common\Address;
use Kerox\Messenger\Model\Message\Attachment\Template\Element\ReceiptElement;
use Kerox\Messenger\Model\Message\Attachment\Template\Receipt;
use Kerox\Messenger\Model\Message\Attachment\Template\Receipt\Adjustment;
use Kerox\Messenger\Model\Message\Attachment\Template\Receipt\Summary;

$elements = [
    (new ReceiptElement('Classic White T-Shirt', 50))
        ->setSubtitle('100% Soft and Luxurious Cotton')
        ->setQuantity(2)
        ->setCurrency('USD')
        ->setImageUrl('http://petersapparel.parseapp.com/img/whiteshirt.png'),
    (new ReceiptElement('Classic Gray T-Shirt', 25))
        ->setSubtitle('100% Soft and Luxurious Cotton')
        ->setQuantity(1)
        ->setCurrency('USD')
        ->setImageUrl('http://petersapparel.parseapp.com/img/grayshirt.png'),
];

$summary = new Summary(56.14);
$summary
    ->setSubtotal(75.00)
    ->setShippingCost(4.95)
    ->setTotalTax(6.19);

$receipt = new Receipt('Stephane Crozatier', '12345678902', 'USD', 'Visa 2345', $elements, $summary);
$receipt
    ->setTimestamp('1428444852')
    ->setOrderUrl('http://petersapparel.parseapp.com/order?order_id=123456')
    ->setAddress(new Address('1 Hacker Way', 'Menlo Park', '94025', 'CA', 'US'))
    ->setAdjustments([
        (new Adjustment())->setName('New Customer Discount')->setAmount(20),
        (new Adjustment())->setName('$10 Off Coupon')->setAmount(10),
    ]);
            
$messenger->send()->message(<USER_ID>, $receipt);

Send a message with an Airline Boarding Pass

use Kerox\Messenger\Model\Message\Attachment\Template\Airline\Airport;
use Kerox\Messenger\Model\Message\Attachment\Template\Airline\BoardingPass;
use Kerox\Messenger\Model\Message\Attachment\Template\Airline\FlightInfo;
use Kerox\Messenger\Model\Message\Attachment\Template\Airline\FlightSchedule;
use Kerox\Messenger\Model\Message\Attachment\Template\AirlineBoardingPass;

$departureAirport = (new Airport('JFK', 'New York'))->setTerminal('T1')->setGate('D57');
$arrivalAirport = new Airport('AMS', 'Amsterdam');
$flightSchedule = (new FlightSchedule('2016-01-02T19:05'))->setArrivalTime('2016-01-05T17:30');

$flightInfo = new FlightInfo('KL0642', $departureAirport, $arrivalAirport, $flightSchedule);

$boardingPass1 = new BoardingPass('Smith Nicolas', 'CG4X7U', 'https://www.example.com/en/logo.png', 'M1SMITH NICOLAS  CG4X7U nawouehgawgnapwi3jfa0wfh', 'https://www.example.com/en/PLAT.png', $flightInfo);
$boardingPass1
    ->setTravelClass('business')
    ->setSeat('74J')
    ->addAuxiliaryFields('Terminal', 'T1')
    ->addAuxiliaryFields('Departure', '30OCT 19:05')
    ->addSecondaryFields('Boarding', '18:30')
    ->addSecondaryFields('Gate', 'D57')
    ->addSecondaryFields('Seat', '74J')
    ->addSecondaryFields('Sec.Nr.', '003')
    ->setHeaderImageUrl('https://www.example.com/en/fb/header.png');


$boardingPass2 = new BoardingPass('Jones Farbound', 'CG4X7U', 'https://www.example.com/en/logo.png', 'M1JONES FARBOUND  CG4X7U nawouehgawgnapwi3jfa0wfh', 'https://www.example.com/en/PLAT.png', $flightInfo);
$boardingPass2
    ->setTravelClass('business')
    ->setSeat('74K')
    ->addAuxiliaryFields('Terminal', 'T1')
    ->addAuxiliaryFields('Departure', '30OCT 19:05')
    ->addSecondaryFields('Boarding', '18:30')
    ->addSecondaryFields('Gate', 'D57')
    ->addSecondaryFields('Seat', '74K')
    ->addSecondaryFields('Sec.Nr.', '004')
    ->setHeaderImageUrl('https://www.example.com/en/fb/header.png');

$boardingPass = [
    $boardingPass1,
    $boardingPass2,
];

$airlineBoardingPass = new AirlineBoardingPass('You are checked in.', 'en_US', $boardingPass);
$airlineBoardingPass->setThemeColor('#FF0000');

$messenger->send()->message(<USER_ID>, $airlineBoardingPass);

Send a message with an Airline Checkin

use Kerox\Messenger\Model\Message\Attachment\Template\Airline\Airport;
use Kerox\Messenger\Model\Message\Attachment\Template\Airline\FlightInfo;
use Kerox\Messenger\Model\Message\Attachment\Template\Airline\FlightSchedule;
use Kerox\Messenger\Model\Message\Attachment\Template\AirlineCheckIn;

$departureAirport = (new Airport('SFO', 'San Francisco'))
    ->setTerminal('T4')
    ->setGate('G8');

$arrivalAirport = (new Airport('SEA', 'Seattle'))
    ->setTerminal('T4')
    ->setGate('G8');

$flightSchedule = (new FlightSchedule('2016-01-05T15:45'))
    ->setArrivalTime('2016-01-05T17:30')
    ->setBoardingTime('2016-01-05T15:05');

$flightInto = [
    new FlightInfo('f001', $departureAirport, $arrivalAirport, $flightSchedule)
];

$airlineCheckIn = new AirlineCheckIn('Check-in is available now.', 'en_US', 'ABCDEF', $flightInto, 'https://www.airline.com/check-in');

$messenger->send()->message(<USER_ID>, $airlineCheckIn);

Send a message with an Airline Itinerary

use Kerox\Messenger\Model\Message\Attachment\Template\Airline\Airport;
use Kerox\Messenger\Model\Message\Attachment\Template\Airline\ExtendedFlightInfo;
use Kerox\Messenger\Model\Message\Attachment\Template\Airline\FlightInfo;
use Kerox\Messenger\Model\Message\Attachment\Template\Airline\FlightSchedule;
use Kerox\Messenger\Model\Message\Attachment\Template\Airline\PassengerInfo;
use Kerox\Messenger\Model\Message\Attachment\Template\Airline\PassengerSegmentInfo;
use Kerox\Messenger\Model\Message\Attachment\Template\AirlineItinerary;

$departureAirport1 = (new Airport('SFO', 'San Francisco'))->setTerminal('T4')->setGate('G8');
$departureAirport2 = (new Airport('SLC', 'Salt Lake City'))->setTerminal('T1')->setGate('G33');

$arrivalAirport1 = (new Airport('SLC', 'Salt Lake City'))->setTerminal('T4')->setGate('G8');
$arrivalAirport2 = (new Airport('AMS', 'Amsterdam'))->setTerminal('T1')->setGate('G33');

$flightSchedule1 = (new FlightSchedule('2016-01-02T19:45'))->setArrivalTime('2016-01-02T21:20');
$flightSchedule2 = (new FlightSchedule('2016-01-02T22:45'))->setArrivalTime('2016-01-03T17:20');

$passengerInfo = [
    (new PassengerInfo('p001', 'Farbound Smith Jr'))->setTicketNumber('0741234567890'),
    (new PassengerInfo('p002', 'Nick Jones'))->setTicketNumber('0741234567891'),
];

$flightInfo = [
    (new ExtendedFlightInfo('c001', 's001', 'KL9123', $departureAirport1, $arrivalAirport1, $flightSchedule1, TravelClassInterface::BUSINESS))->setAircraftType('Boeing 737'),
    (new ExtendedFlightInfo('c002', 's002', 'KL321', $departureAirport2, $arrivalAirport2, $flightSchedule2, TravelClassInterface::BUSINESS))->setAircraftType('Boeing 747-200'),
];

$passengerSegmentInfo = [
    new PassengerSegmentInfo('s001', 'p001', '12A', 'Business'),
    new PassengerSegmentInfo('s001', 'p002', '12B', 'Business'),
    (new PassengerSegmentInfo('s002', 'p001', '73A', 'World Business'))
        ->addProductInfo('Lounge', 'Complimentary lounge access')
        ->addProductInfo('Baggage', '1 extra bag 50lbs'),
    (new PassengerSegmentInfo('s002', 'p002', '73B', 'World Business'))
        ->addProductInfo('Lounge', 'Complimentary lounge access')
        ->addProductInfo('Baggage', '1 extra bag 50lbs'),
];

$airlineItinerary = new AirlineItinerary('Here\'s your flight itinerary.', 'en_US', 'ABCDEF', $passengerInfo, $flightInfo, $passengerSegmentInfo, '14003', 'USD');
$airlineItinerary
    ->addPriceInfo('Fuel surcharge', '1597', 'USD')
    ->setBasePrice('12206')
    ->setTax('200');

$messenger->send()->message(<USER_ID>, $airlineItinerary);
Clone this wiki locally