统计
  • 建站日期:2022-01-17
  • 文章总数:4130 篇
  • 评论总数:18645条
  • 分类总数:43 个
  • 最后更新:1天前

手把手教你制作一个电报Telegram AI机器人(AI Bot)/全程干货

首页 综合教程 正文
广告
广告
广告
广告

image.png

Telegram 又称为电报,小飞机 App,(下文简称 TG)是国外非常火的在线聊天工具。许多出海业务和产品社群都会以其为核心,裂变出大量的产品用户。
而 Telegram Bot 又是社群运营的关键。但是常规的 Bot 只能进行一些简单的进群验证,如果将 AI 对话能力引入至 Bot 回答用户问题,一定能够大幅增强社群的活跃度。
效果大概如下:

image.png

无需掌握代码知识,本文将手把手教你搭建出属于你自己的 Telegram AI Bot。步骤如下:

1. 在 AnakinAI 平台内创建 AI App

2. 申请 Telegram Bot Token

3. 在 Cloudflare Workers 内部署 Bot 程序

4. 开始对话

Telegram Bot 本身还提供了丰富的 API 能力,你甚至还可以在后端的 AI App 内接入知识库,直接让 Bot 来充当 AI 智能客服!

准备工作

  • Telegram 账号/客户端(本文默认你已经能够正常访问,不会涉及任何注册指导)

  • Cloudflare 账号

  • 在 Anakin.ai 内创建 AI App

1. 申请 Telegram Bot

在 Telegram 内搜索 @BotFather ,然后点击 "Start" 按钮,然后输入 /newbot 命令,按照提示输入 Bot 的名字和 username。

image.png

获取 HTTP API Token,这是与 Telegram Bot 交互的唯一凭证,请妥善保管。

image.png

2. 申请 AnakinAI 应用 API Access Key

本文将会以 Anakin.ai 作为 AI 应用的创建平台作为示例。

Anakin.ai 是一站式 AI 应用平台,上面已经预置了大量好用的 AI App。你可以随意挑选并克隆至自己的工作空间内,或者非常轻易地搭建出属于自己的 AI App。支持中文!!

注册 Anakin.ai 后,点击左下角的头像,在 "API Access Token" tab 页中生成你自己的 API Access Key,这是 TG Bot 与 AI App 通讯的唯一凭证,请妥善保管。

image.png

克隆或自建 AI 应用,然后在应用的“应用集成” tab 页找到 App ID。

image.png

注意

  • API Key 仅展示一次,请妥善保存。

  • 不要在 URL 内明文传输 Key,避免泄露而造成预期之外的 Credits 消耗

3. 将 AI App 集成至 TG Bot

原理说明

用户在与 Telegram Bot 对话时,Bot 将会将用户输入的对话信息通过 API 发送至 Anakin App,Anakin App 再根据用户输入的文本生成回复内容,并将回复内容通过 API 返回至 Telegram Bot,最终由 Telegram Bot 再将回复内容发送至用户。

3.1 部署 Telegram 请求程序

在 VPS 或 Serverless 服务上部署一个 Telegram 请求后端程序,用于接收并处理用户发送给 Telegram Bot 的消息,并将请求信息发送至 Anakin API 进行处理,最后再传递回用户。

本章节将以 Cloudflare Workers 为例,部署一个 Telegram 请求程序。

Workers 免费注册地址:

https://dash.cloudflare.com/workers-and-pages

点击 "Workers & Pages" tab 页中的 Overview,然后轻点 "创建应用程序" 按钮。

image.png

点击 "创建 Worker" 按钮,重命名 Worker 名称。在代码框内复制粘贴以下代码,并将以下参数替换为自己的 ID。

YOUR_TELEGRAM_BOT_TOKEN

YOUR_BOT_USERNAME、YOUR_ANAKINAI_API_KEY

ChatbotId 替换为上文中的 App ID

const telegramAuthToken = 'YOUR_TELEGRAM_BOT_TOKEN';
const webhookEndpoint = "/endpoint";
const botUsername = "@YOUR_BOT_USERNAME"; // 替换为您的机器人用户名

addEventListener("fetch", event => {
  event.respondWith(handleIncomingRequest(event));
});

async function handleIncomingRequest(event) {
  let url = new URL(event.request.url);
  let path = url.pathname;
  let method = event.request.method;
  let workerUrl = `${url.protocol}//${url.host}`;

  // 在启动时设置 Webhook
  if (method === "GET" && path === "/") {
    const webhookUrl = `https://api.telegram.org/bot${telegramAuthToken}/setWebhook?url=${workerUrl}${webhookEndpoint}`;
    const response = await fetch(webhookUrl);
    if (response.ok) {
      return new Response("Webhook set successfully", { status: 200 });
    } else {
      return new Response("Failed to set webhook", { status: response.status });
    }
  }

  if (method === "POST" && path === webhookEndpoint) {
    const update = await event.request.json();
    event.waitUntil(processUpdate(update));
    return new Response("Ok");
  } else if (method === "GET" && path === "/configure-webhook") {
    const url = `https://api.telegram.org/bot${telegramAuthToken}/setWebhook?url=${workerUrl}${webhookEndpoint}`;
    const response = await fetch(url);
    if (response.ok) {
      return new Response("Webhook set successfully", { status: 200 });
    } else {
      return new Response("Failed to set webhook", { status: response.status });
    }
  } else {
    return new Response("Not found", { status: 404 });
  }
}

async function processUpdate(update) {
  let chatId, userText, responseText;

  if ("message" in update) {
    const message = update.message;
    chatId = message.chat.id;
    userText = message.text;

    // 检查是否为群组消息并且提及了机器人
    if (message.chat.type === "group" || message.chat.type === "supergroup") {
      if (userText.includes(botUsername)) {
        userText = userText.replace(botUsername, "").trim();
      } else {
        // 如果没有提及机器人,则不响应
        return;
      }
    }

    const apiKey = 'YOUR_ANAKINAI_API_KEY'; // 替换为您的 API 密钥
    const chatbotId = 'ChatbotId'; // 替换为您的 Chatbot ID

    const myHeaders = new Headers();
    myHeaders.append("X-Anakin-Api-Version", "2024-05-06");
    myHeaders.append("User-Agent", "Apidog/1.0.0 (https://apidog.com)");
    myHeaders.append("Content-Type", "application/json");
    myHeaders.append("Authorization", `Bearer ${apiKey}`);

    const raw = JSON.stringify({ "content": userText, "stream": false });
    const requestOptions = {
      method: 'POST',
      headers: myHeaders,
      body: raw,
      redirect: 'follow'
    };

    const response = await fetch(`https://api.anakin.ai/v1/chatbots/${chatbotId}/messages`, requestOptions);
    const result = await response.json();

    console.log('API response:', result); // 打印出完整的 API 响应数据

    // 从响应数据中取出 content 字段的值
    const responseText = result.content || "Sorry, I couldn't get a response.";

    const url = `https://api.telegram.org/bot${telegramAuthToken}/sendMessage?chat_id=${chatId}&text=${encodeURIComponent(responseText)}`;
    await fetch(url);
  } else {
    // 处理其他类型的更新
    return;
  }
}

然后点击右上角 "部署" 按钮。

image.png

3.2 测试 Telegram Bot

在 Telegram 内搜索你的 Bot 名字。点击进入并开始聊天。你也可以在 @BotFather 内输入 /mybots 命令来查看你的 Bot 名称。

image.png

向 Bot 发送消息,你可以看到由 AI 生成的回复内容。

image.png

4. 将 Bot 添加至群组

在添加 Bot 至群组之前,你需要确保已设置相应的隐私策略。前往 @BotFather,输入 /mybots 命令,开启 Allow Groups 并关闭 Group Privacy 设置。

image.png

群组内的用户可以直接 @bot 并进行对话聊天

image.png

注意

多人群聊可能会加速 Bot 的 Credits 消耗,请及时关注你的 Credits 余额。访问 Anakin.ai,点击右下角的 Credits 余额,然后在 "升级/续费" → “额度明细” 内查看你的 Credits 使用记录。

总结

除了本文介绍的 AI Bot 与 TG 的集成以外,你还可以在 AnakinAI 直接体验到由 OpenAI 出品的 GPT-4 模型和谷歌推出的 Gemini Pro 等一系列专业的大模型。
无论是谁最新推出了 AI 大模型,你都可以在最快的时间内在 Anakin 平台内进行体验。

版权说明
文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。
版权声明:本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系客服并出示版权证明以便删除!
安卓快连加速器V2.23.0/VIP会员破解版/科学上网工具
« 上一篇 05-31
PanTransfer 网盘转存工具v1.0.7/百度网盘转存到迅雷网盘工具
下一篇 » 05-30

发表评论

  • 泡泡
  • 阿呆
  • 阿鲁
  • 蛆音娘
    没有更多评论了