PHPを使用してViberボットを作成する方法

2016年11月、Viberはパブリックアカウント( Viberパブリックアカウント 、または単にPA)を導入しました。 リリースに伴い、APIも利用可能になり、次のことが可能になりました。









これにより、非常に優れたボットを作成したり、ボットを既存のプロジェクトに統合したりすることができます。これにより、ユーザーインタラクションの品質が向上する可能性があります。 すでに電報またはスラック用のボットを作成している場合、Viber用のボットを作成するのは難しくありません。







エントリー



少し前に、バイブのユーザーとやり取りする必要がありました。 ユーザーとの典型的なダイアログをアプリケーションに導入し、「ボタンダイアログ」も提供したいと思います(ユーザーがチャットの下にいくつかのボタンを見る場合)。 しかし、その時点では、このためのオープン(パブリック)APIはなく、レーキを拒否または回避する必要がありました。







パブリックアカウント(PA)のリリースにより状況が変わりました。今、必要な「ボタンダイアログ」と「変換」とのより完全な相互作用を作成できます。 これはすべて素晴らしいですが、1つではありませんが、PHP用のSDKはありません (正義のために、 nodejsおよびpython用のSDKがあります )。 このギャップを埋めることにし、PHPで簡単なボットを作成し、SDKを作成する方法を説明することにしました。







最初のステップ



ボットを作成する前に、特別なタイプのアカウントにアクセスする必要があります。 奇妙に思えるかもしれませんが、この記事の執筆時点ではそうではありません。 これを行うには、 https://www.viber.com/en/public-accountsにアクセスして、必要なフォームに入力します。







paへの早期アクセス







フォームでは、パブリックアカウントへのアクセスが許可される電話を指定し、しばらくすると、「...パブリックアカウントへの早期アクセスが可能になりました!...」という形式のメッセージを受け取ります。 その後、Viberクライアントを再起動し、次の手順を実行する必要があります。







  1. [パブリックアカウント]セクションを開きます(右上のアイコン- ico







  2. [アカウントを作成]をクリックします(右下のアイコン- ico







  3. ボットのデータを入力します(背景画像、指定されたカテゴリ、名前、説明などが必要です)


最後のステップで、メッセージの操作方法を選択できるようになり、「api」を選択してキーをコピーします。 (または、「情報の編集」PA画面で簡単に見ることができます):







ページトークンの編集







たとえば、私のキーは1111111111111111-2222222222222222-3333333333333333



なります







サーバー側



ボットを開発してViber-APIを使用するには、 https//github.com/Bogdaan/viber-bot-phpという小さなSDKを使用します 。 REST-apiとのやり取りの詳細を一部省略し、ボットのロジックを構築できます。 インストールしてください:







 composer require bogdaan/viber-bot-php
      
      





まず、webhookアドレスを登録する必要があります。これは、Viberaバックエンドがユーザーからのメッセージやその他のイベントを配信するアドレスです。 ボットが配置されるWebサーバー(およびWebhook)は、正しいSSL証明書を使用してhttps上で動作する必要があります。 自己署名証明書はここでは機能しません。存在しない場合は、 letsencrypt.orgを使用してみてください







たとえば、私のwebhookはhttps://viber.hcbogdan.com/bot.php



なりhttps://viber.hcbogdan.com/bot.php



setup.php



ファイルを作成します。







 <?php require_once("../vendor/autoload.php"); use Viber\Client; $apiKey = '1111111111111111-2222222222222222-3333333333333333'; // <- PLACE-YOU-API-KEY-HERE $webhookUrl = 'https://viber.hcbogdan.com/bot.php'; // <- PLACE-YOU-HTTPS-URL try { $client = new Client([ 'token' => $apiKey ]); $result = $client->setWebhook($webhookUrl); echo "Success!\n"; } catch (Exception $e) { echo "Error: ". $e->getError() ."\n"; }
      
      





そして、ファイルを実行してwebhookを登録します。







 $ php setup.php Success!
      
      





これで、ユーザーがメッセージを送信するか、チャットに入ると、リクエストはwebhookアドレスに送信されます。 bot.php



ファイルを作成します。







 <?php require_once("../vendor/autoload.php"); use Viber\Bot; use Viber\Api\Sender; $apiKey = '<PLACE-YOU-API-KEY-HERE>'; //      (   -  ) $botSender = new Sender([ 'name' => 'Whois bot', 'avatar' => 'https://developers.viber.com/img/favicon.ico', ]); try { $bot = new Bot(['token' => $apiKey]); $bot ->onConversation(function ($event) use ($bot, $botSender) { //    ,       //    "",       return (new \Viber\Api\Message\Text()) ->setSender($botSender) ->setText("Can i help you?"); }) ->onText('|whois .*|si', function ($event) use ($bot, $botSender) { //         //      $bot->getClient()->sendMessage( (new \Viber\Api\Message\Text()) ->setSender($botSender) ->setReceiver($event->getSender()->getId()) ->setText("I do not know )") ); }) ->run(); } catch (Exception $e) { // todo - log exceptions }
      
      





次に、 https://viber.hcbogdan.com/bot.php



bot.php



で利用できるようにbot.php



ファイルを配置し、vibeクライアントからボットとチャットします。 ボットの回答が表示されない場合は、error_logおよびaccess_logでエラーを確認する価値があります。







ボットの機能をわずかに改善し、ロギングを追加できます。 monologでやってみましょう:







 composer require monolog/monolog
      
      





例外ログを追加します。







 <?php //... } catch (Exception $e) { // log exceptions $log = new \Monolog\Logger('bot'); $log->pushHandler(new \Monolog\Handler\StreamHandler('/tmp/bot.log')); $log->warning('Exception: '. $e->getMessage()); }
      
      





すべての例外は/tmp/bot.log



ます。







ボットの基本バージョンの準備が整いました。独自のロジックを追加し、ボタンをチャットに追加し、ディープリンクとHTMLマークアップを使用できます。これらはすべてSDKで利用できます。 viberチャットで見ることができるいくつかのデモを作成しました:// pa?ChatURI = viber-bot-php&context = habrahabr 。 viberクライアントをまだお持ちでない場合は、次のリンクからチャットを見つけることができます: viber-bot-php







便利なリンク






All Articles