快速聊天:使用 Botter 构建聊天机器人 🤓 理论🔥实践🏁 结论祝您编码愉快,记住 - 唯一的限制就是您的想象力!🌈

2025-06-07

快速聊天:使用 Botter 构建聊天机器人

🤓 理论

🔥 练习

🏁 结论

祝你编码愉快,记住——唯一的限制就是你的想象力!🌈

如果您是一位 Swift 开发者,并且正在构思一个聊天机器人的创意,并渴望使用您最喜欢的编程语言将其变为现实,那么最简单的方法就是使用 Botter——一个开源的跨平台聊天机器人框架。它利用 Vapor 的强大功能以及特定于平台的框架,实现快速便捷的跨平台聊天机器人开发。

🤓 理论

Botter 使您能够接收和发送短信、媒体附件、文件和命令,以获得高质量的用户体验,同时使用 Swift(所有 Apple 开发人员的原生编程语言)。

Botter 与Vapor协同工作,后者负责处理您项目的服务器端功能。这种强大的组合让您可以专注于最重要的事情——打造一个引人入胜且高效的聊天机器人。

图片描述

🔥 练习

接下来,我将逐步演示使用该框架编写一个简单的聊天机器人是多么容易:

👶 设置你的 Vapor 环境

正如我之前提到的,我们的项目将基于 Vapor 构建。因此,我们需要在本地安装它。你可以在终端中运行以下命令来执行此操作:

brew install vapor
Enter fullscreen mode Exit fullscreen mode

现在我们已经安装了 Vapor,让我们创建一个新的空 Vapor 项目。您可以通过运行以下命令来执行此操作:

vapor new hello -n
Enter fullscreen mode Exit fullscreen mode

运行此命令后,目录中将生成一个新项目/hello。下一步是Package.swift在 Xcode 中打开该文件。您可以导航到项目目录并使用以下命令打开该文件:

cd ./hello
open Package.swift
Enter fullscreen mode Exit fullscreen mode

🔀 添加依赖项

要使用 Botter,我们需要将其添加为外部依赖项。打开项目的 Swift 包管理器文件,并将以下行添加到依赖项数组中:

.package(url: "https://github.com/CoolONEOfficial/Botter.git", branch: "main"),
Enter fullscreen mode Exit fullscreen mode

接下来,通过在同一文件的目标部分中包含以下行,将 Botter 添加到应用程序的依赖项中:

.product(name: "Botter", package: "Botter"),
Enter fullscreen mode Exit fullscreen mode

然后,您可以尝试构建项目。这将确保 Botter 正确链接到您的项目并可供使用。

🏗️ 描述机器人逻辑

在 Botter 中,有三个实体描述聊天机器人:

  • bot:与平台交互,例如发送某些内容、修改现有消息等。
  • updater:通过 webhook 检索数据。
  • dispatcher:处理接收到的数据并将其传递给您。

将这些实体包装在您自己的实体中是一种很好的做法,如下所示:

class EchoBot {
    public let dispatcher: Botter.Dispatcher
    public let bot: Botter.Bot
    public let updater: Botter.Updater

    public init(settings: Botter.Bot.Settings, app: Application) throws {
        self.bot = try .init(settings: settings)
        self.dispatcher = .init(bot: bot, app: app)
        self.updater = .init(bot: bot, dispatcher: dispatcher)
    }
}
Enter fullscreen mode Exit fullscreen mode

要订阅用户的短信,可以参考dispatcher

dispatcher.add(handler: Botter.MessageHandler(filters: .all, callback: handleMessage))
Enter fullscreen mode Exit fullscreen mode

并且在handleMessage方法中可以像这样指定刚刚收到的消息的返回:

func handleMessage(_ update: Botter.Update, context: Botter.BotContextProtocol) throws {
    guard case let .message(message) = update.content else { return }

    guard let params = Botter.Bot.SendMessageParams(to: message, text: message.text) else { return }

    try bot.sendMessage(params, platform: message.platform.any, context: context)
}
Enter fullscreen mode Exit fullscreen mode

同样,您可以接收其他类型的更新,例如接收图像或单击之前发送的按钮。

👷‍♂️ 配置你的机器人

要启动并运行聊天机器人,您需要指定平台特定的设置,例如聊天机器人可访问的端口和 URL、授权密钥等等。您可以在configure文件中按如下方式指定这些设置:

private func configureEchoBotter(_ app: Application) throws {
    let botterSettings = Botter.Bot.Settings(
        tg: tgSettings(app)
    )
    let bot = try EchoBot(settings: botterSettings, app: app)
}

func tgSettings(_ app: Application) -> Telegrammer.Bot.Settings {
    var tgSettings = Telegrammer.Bot.Settings(token: ””, debugMode: !app.environment.isRelease)
    tgSettings.webhooksConfig = .init(ip: "0.0.0.0", baseUrl: “”, port: 123)
    return tgSettings
}
Enter fullscreen mode Exit fullscreen mode

每个平台都需要有自己的聊天机器人设置才能正常工作。例如,对于 Telegram,您需要一个令牌、一个 URL 和一个用于聊天机器人的端口。要获取令牌,您需要按照官方指南中的步骤操作。您还需要设置服务器,使其可以通过互联网访问。这可以通过多种服务来完成,例如http://localhost.run/

一旦指定了所有参数,请不要忘记在方法主体中调用机器人配置方法configure

try configureEchoBotter(app)
Enter fullscreen mode Exit fullscreen mode

并开始接收来自平台的更新:

try bot.updater.startWebhooks(vkServerName: Constants.vkServerName).wait()
Enter fullscreen mode Exit fullscreen mode

如果一切都正确指定,启动后,聊天机器人应该可以运行并复制消息。

为了您的方便,我已将上述示例上传到存储库:https://github.com/CoolONEOfficial/echobot

⚙️ 高级机器人逻辑示例

现在我们已经介绍了基础知识,让我们深入研究一些您可能会觉得有用的更复杂的机器人逻辑。

📝 编辑已发送的消息

editMessage您可以使用如下方法编辑一条刚刚发送的消息:

try bot.sendMessage(params, platform: message.platform.any, context: context).map(\.first).optionalFlatMap { message in
    try! self.bot.editMessage(message, params: .init(message: "Other text"), app: self.app)!
}
Enter fullscreen mode Exit fullscreen mode

🖼️ 将图像附加到消息

您可以通过添加一个包含附件数组的参数,将图片附加到消息中attachments。附件可以是媒体内容或文档。以下是示例:

Botter.Bot.SendMessageParams(to: message, text: message.text, attachments: [ .init(type: .photo, content: .url("")) ])
Enter fullscreen mode Exit fullscreen mode

🔘 向消息添加按钮

您可以使用以下参数向消息添加按钮keyboard

Botter.Bot.SendMessageParams(to: message, text: message.text, keyboard: [ [ Button(text: "Tap me", payload: "some data") ] ])
Enter fullscreen mode Exit fullscreen mode

要处理按钮点击,您应该在handleMessage方法中处理它们,其中可以在参数中找到按钮的有效负载update

☁️ 部署你的机器人

在前面的步骤中,我们设法让聊天机器人在本地运行,但是您可以在哪里托管它以供持续使用?

好消息是,该项目同时支持 macOS 和 Linux,因此您可以利用众多 PaaS 服务。您可以从 Heroku 或其替代方案开始,但由于端口限制,您需要为每个平台分别启动聊天机器人实例。

然而,对我来说更好的解决方案是来自 MacStadium 的专用 macOS 服务器,它不会施加这样的限制。

📚 资源

您可以在我的PhotoBot 项目中找到更多使用 Botter 的示例,该项目利用了该框架的所有功能。

如果您有兴趣深入了解 Botter - Vapor 的基础知识,我推荐以下资源:

🏁 结论

我们已经完成了使用 Botter 框架设置和配置聊天机器人的步骤,甚至还介绍了一些高级功能。但这仅仅是个开始。真正的奇迹发生在你开始尝试、创新并构建属于你自己的独特产品时。

记住,每个优秀的聊天机器人都始于一行代码。有了 Botter,您就拥有了一款强大的工具,可以让您的聊天机器人梦想成真。无论您是想构建一个简单的趣味机器人,还是一个用于业务的复杂机器人,Botter 都能提供您所需的灵活性和功能。

还在等什么?聊天机器人的世界触手可及。立即开始编程,看看你的创造力能带来什么。你的第一个聊天机器人可能只需几行代码就能诞生。

您的聊天机器人之旅现在开始

祝你编码愉快,记住——唯一的限制就是你的想象力!🌈

文章来源:https://dev.to/cooloneofficial/swiftly-chatting-building-chatbots-with-botter-1ojm
PREV
使用 Node.js 和 Express 构建后端
NEXT
🤯12 个必备开源工具,助您轻松搞定现代 Web 开发 🔥