im 即时通讯软件系统的受欢迎水平在过来几年始终在增长,因为它具备弱小的性能和可靠性,能够解决一些业务案例。此外,Bot 已失去 Telegram、Line、Facebook 等许多即时消息服务提供商的反对。另一方面,Laravel 是构建用 PHP 编写的 Web 应用程序的最风行的框架之一。
残缺源码:im.jstxym.top
在本文中,咱们将尝试为 Telegram 音讯平台制作一个简略的聊天机器人。本教程将涵盖一些主题,例如:
1、创立新的 Laravel 我的项目;
2、创立电报机器人;
3、将 Telegram 机器人集成到 Laravel;
4、解决 Telegram 机器人更新。
5、发送音讯。
创立一个新的 Laravel 我的项目
你能够在你机器中的任何目录中启动一个新的 Laravel 我的项目。无关创立新 Laravel 我的项目的更多详细信息,请查看官网文档中的阐明。
让咱们开始吧!
关上终端并在本地目录中运行:
composer create-project --prefer-dist laravel/laravel blog
当初,您应该领有 blog 蕴含 Laravel 我的项目的文件夹。通过运行转到该目录 cd blog。
为确保所有按计划进行,请进入 blog 目录并运行 php artisan serve 以启动咱们刚刚创立的 Web 服务器。您的应用程序应该在 localhost:8000.
创立 im 零碎
平凡的!当初咱们曾经筹备好 Laravel 我的项目了。接下来,让咱们创立咱们的 Telegram Bot!如果您想理解无关 Telegram bot 的更多信息,我心愿您在这里摸索它。
首先,关上你的 Telegram 利用,而后找到 @botfather。BotFather 是 Telegram 创立的即时通讯管理者,用于治理和统治所有其余 im 子系统。
击 开始与 BotFather 的对话 Start。之后,输出 /newbot 并依照提供的所有阐明进行操作。在交互完结时,您将失去一些确认,如下所示:
结束!恭喜你的新零碎。您能够在 /YOUR_BOT_USERNAME 找到它。您当初能够为您的零碎增加形容、对于局部和个人资料图片,请参阅 /help 以获取命令列表。顺便说一句,当您实现创立零碎后,如果您想要一个更好的用户名,请分割咱们的机器人反对。在执行此操作之前,请确保零碎齐全可操作。
在 BotFather 发送的音讯中,您将取得机器人的拜访令牌。咱们将应用此令牌来辨认您的机器人并作为您的机器人的机密签名密钥。确保您将令牌窃密!如果其他人取得了您的令牌,他们能够代表您的机器人拜访并执行命令。
好的!当初咱们的 Bot、咱们 BOT_TOKEN 的 Laravel 我的项目曾经准备就绪!
将 Telegram Bot 集成到 Laravel
在本教程中,咱们将应用 telegram-bot-sdk。这个 SDK 帮忙咱们从 Laravel 我的项目中轻松地执行任何办法或操作。这一次,咱们将应用 dev-develop 版本(稳定版曾经过期了;本文将在 v3.0 成为稳定版后更新)。
转到咱们的 Laravel 我的项目目录并运行 composer require irazasyed/telegram-bot-sdk dev-develop. 而后装置实现后,运行 php artisan vendor:publish 公布电报配置文件。配置文件当初应该位于 config/telegram.php.
当初,让咱们连贯到目前为止咱们所做的所有!在外面 telegram.php 你应该看到很多对于零碎的配置。咱们来看看 ”bots” 要害。在这里 mybotkey,将用户名值更改为您的 Telegram 零碎用户名,并将令牌值更改为您 access token 由 BotFather 提供的值。
解决信息更新
当初,咱们取得了与咱们的我的项目相关联的 Bot 拜访令牌。接下来,让咱们解决 Telegram 更新。
什么是信息更新?依据官网文档,
与您的零碎进行的每个交互用户都将被称为更新。每个更新都将被格式化为 JSON 序列化对象。
因而,更新是一个蕴含对咱们的零碎进行的每一次交互的对象。例如,当有人与咱们的零碎聊天时,将进行更新。或者当咱们的零碎增加到聊天组 / 超级组时,将进行更新。
要拜访 Telegram 更新,咱们将创立一个新的 API 路由来测试它。在外面 routes/api.php,让咱们创立一个新的 API 路由来获取信息更新,如下所示。
<?php
use Illuminate\Http\Request;
use Telegram;
...
Route::post('/bot/getupdates', function() {$updates = Telegram::getUpdates();
return (json_encode($updates));
});
好的!咱们调用了 API 路由 /bot/getupdates 来接管来自 Telegram 服务器的更新。而且,不要遗记应用 Telegram 类。通过胜利获取更新,咱们能够抉择如何依据用户对咱们的机器人所做的每个操作采取相应的口头,包含邀请聊天组、解决命令或只是回复聊天。
这种获取更新的办法是应用长轮询来获取更新。对于高级用法,您能够设置 webhook 以取得更好的用户体验。
发送音讯
真正的乐趣,发送音讯。
在本节中,咱们将尝试向群组、超级群组、频道或简略地向个人用户发送音讯。咱们将应用 sendMessage 办法来发送音讯。在外面 routes/api.php,让咱们创立一个新的 API 路由,如下所示:
<?php
...
Route::post('bot/sendmessage', function() {
Telegram::sendMessage([
'chat_id' => 'RECIPIENT_CHAT_ID',
'text' => 'Hello world!'
]);
return;
});
让咱们来看看咱们刚刚编写的代码的细节。如咱们所见,sendMessage 接管几个参数,例如:
1、chat_id:这是您的收件人的聊天 ID。每个用户、频道、群组或超级群组都有本人惟一的聊天 ID。要获取 chat_id,最简略的办法是尝试与咱们的客户聊天并通过 getUpdates 办法获取 chat_id。对于群组、超级群组或频道,咱们须要先邀请客户成为会员能力取得 chat_id.
2、text:作为音讯发送的字符串或整数。
留神:如果特定用户已经与某人开始对话,您只能应用此办法向用户发送音讯。对于群组、超级群组或频道,零碎须要设置为管理员能力发送音讯。