1. Go to this page and download the library: Download nanato12/phine 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/ */
nanato12 / phine example snippets
use Phine\Client;
use Phine\MessageBuilders\TextMessageBuilder;
$client = new Client($channelSecret, $channelAccessToken);
// Parse incoming webhook request
$events = $client->parseEventRequest($requestBody, $signature);
foreach ($events as $event) {
$client->setEvent($event);
$client->reply([new TextMessageBuilder('Hello!')]);
}
$client = new Client($channelSecret, $channelAccessToken);
use Phine\MessageBuilders\TextMessageBuilder;
// Simple text message
$message = new TextMessageBuilder('Hello!');
// With LINE emojis and quote
$message = new TextMessageBuilder(
text: '$ Hello!',
emojis: [$emoji],
quoteToken: 'quote-token'
);
use Phine\MessageBuilders\RawFlexMessageBuilder;
$json = file_get_contents('flex.json');
$contents = json_decode($json, true);
$message = new RawFlexMessageBuilder($contents, 'Alt text for notifications');
use Phine\MessageBuilders\ImageMessageBuilder;
$message = new ImageMessageBuilder(
originalContentUrl: 'https://example.com/image.jpg',
previewImageUrl: 'https://example.com/image-preview.jpg'
);
use Phine\MessageBuilders\VideoMessageBuilder;
$message = new VideoMessageBuilder(
originalContentUrl: 'https://example.com/video.mp4',
previewImageUrl: 'https://example.com/video-thumbnail.jpg',
trackingId: 'tracking-123' // optional, for tracking video views
);
use Phine\MessageBuilders\AudioMessageBuilder;
$message = new AudioMessageBuilder(
originalContentUrl: 'https://example.com/audio.m4a',
duration: 60000 // duration in milliseconds
);
use Phine\MessageBuilders\StickerMessageBuilder;
$message = new StickerMessageBuilder(
packageId: '446',
stickerId: '1988'
);
use Phine\MessageBuilders\LocationMessageBuilder;
$message = new LocationMessageBuilder(
title: 'Tokyo Station',
address: '1 Chome Marunouchi, Chiyoda City, Tokyo',
latitude: 35.6812,
longitude: 139.7671
);
$profile = $client->getProfileFromUserID($userId);
echo $profile->displayName;
echo $profile->pictureUrl;
echo $profile->statusMessage; // Only available for 1:1 chats
use LINE\Webhook\Model\Event;
use LINE\Webhook\Model\MessageEvent;
use LINE\Webhook\Model\TextMessageContent;
use Phine\Client;
use Phine\Handlers\BaseEventHandler;
use Phine\MessageBuilders\TextMessageBuilder;
class TextMessageHandler extends BaseEventHandler
{
public const EVENT_CLASS = MessageEvent::class;
public const MESSAGE_TYPE_CLASS = TextMessageContent::class;
// Optional: public const MESSAGE_SOURCE_CLASS = GroupSource::class;
public function handle(Client $client, Event $event): void
{
$client->reply([new TextMessageBuilder('Message received!')]);
}
}
use LINE\Webhook\Model\Event;
use Phine\Client;
use Phine\Handlers\BaseCommandHandler;
use Phine\MessageBuilders\TextMessageBuilder;
class HelloHandler extends BaseCommandHandler
{
public static function commands(): array
{
return ['hello', 'hi', 'hey'];
}
public function handle(Client $client, Event $event): void
{
$client->reply([new TextMessageBuilder('Hello!')]);
}
}
class SearchHandler extends BaseCommandHandler
{
public static function commands(): array
{
return ['search '];
}
public static function isPrefix(): bool
{
return true; // Matches "search foo", "search bar", etc.
}
public function handle(Client $client, Event $event): void
{
/** @var MessageEvent $event */
/** @var TextMessageContent $message */
$message = $event->getMessage();
$keyword = substr($message->getText(), 7); // Remove "search "
// Search logic here...
}
}
use Phine\Handlers\EventDispatcher;
class BotDispatcher extends EventDispatcher
{
public function getHandlerClasses(): array
{
return [
TextMessageHandler::class,
HelloHandler::class,
SearchHandler::class,
];
}
}
// In your webhook endpoint
$events = $client->parseEventRequest($body, $signature);
foreach ($events as $event) {
BotDispatcher::dispatch($client, $event);
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.