gpt4 book ai didi

python - 在 Errbot 中个性化 API 调用/如何在 Errbot 中存储和访问用户特定信息?

转载 作者:行者123 更新时间:2023-12-01 03:29:23 25 4
gpt4 key购买 nike

在 Errbot 中存储和访问所有插件均可访问的用户特定信息的最佳方式是什么?

我的用例是创建一个 Redmine(问题跟踪)插件,允许用户创建、更新、关闭、分配问题等。

这可以通过单个用户 token 获取,但这并不可行,因为所有问题都将由同一用户创作、更新和记录时间。

有人可以建议我一种方法,以便用户可以存储和更新他们的用户 token ,并且插件可以获取相同的 token 并使用它来调用 api?

附注我刚刚接触了 Chatops/Errbot 并尝试了一些东西。如果有更好的方法请告诉我。

最佳答案

您询问有关存储所有插件均可访问的信息的问题。这可以通过 plugin dependencies 来实现但实际上似乎并不适用于您的用例,因为您似乎只需要这些用户 token 来在您的 redmine 插件中进行 redmine,而不是任何其他插件。

Can someone suggest me a way so that users can store and update their user tokens and the plugin fetches the same and uses it to call apis?

首先,这取决于您的插件需要如何向 Redmine 验证自身身份。根据你的问题,我假设Redmine只是在用户配置文件设置中提供了一个API key ,你需要存储和使用它,所以我会这样做,但如果获取所述 token 的方法更加复杂,事情就会变得更加复杂。

因此,假设用户可以从他的个人资料中获取他的 API token ,并且只需要让机器人使用它,您就可以:

  1. 为用户提供设置 API token 的命令,并使用 builtin persistence 存储它。 :

    def activate(self):
    super().activate()
    if 'tokens' not in self:
    self['tokens'] = {}

    @botcmd
    def set_redmine_token(self, msg, args):
    # See http://errbot.io/en/latest/user_guide/plugin_development/persistence.html#caveats
    # for an explanation of the mutable thing.
    with self.mutable('tokens') as tokens:
    tokens[msg.frm.person] = args
    return "API token set"
  2. 当对 redmine 进行 API 调用时,您可以查看文件中是否有发出命令的用户的 token 并使用它,否则显示错误:

    @botcmd
    def do_redmine_thing(self, msg, args):
    if msg.frm.person not in self['tokens']:
    return "I don't have a token for you, please set it with !set_redmine_token <token>"

    # Now do your API thing, using the token from
    # self['tokens'][msg.frm.person]

请注意,上面是一个非常简单的示例。您可能希望使用 arg_botcmd 而不是普通的 botcmd 来获得更好的参数解析、执行更多错误检查等。

关于python - 在 Errbot 中个性化 API 调用/如何在 Errbot 中存储和访问用户特定信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41104246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com