【问题标题】:Azure Bot Builder get telegramID from telegram UserNameAzure Bot Builder 从电报用户名获取电报 ID
【发布时间】:2018-11-25 06:38:22
【问题描述】:

我正在创建一个电报机器人,它根据用户的电报 ID、唯一编号来跟踪组中的用户。

我想使用 azure bot builder 执行一个命令,当我键入 /ShowUserActivityByUserName @[UserName] 时,我将从用户名中获取电报 ID,并从我的数据库中提取具有此电报 ID 的所有数据

无论如何我可以查询电报并获取用户ID吗?

我正在使用来自 azure bot maker 的基本模板

public async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> argument)
{
    var message = await argument;

    if (message.Text.StartsWith("/"))
    {
        if (message.Text.StartsWith("/ShowUserActivityByUserName "))
        {
            // do database things
            string userID = getTelegramIDFromUserName(getStringAfter(message.Text, "/ShowUserActivityByUserName "));
            await context.PostAsync("UserID: " + username);
            context.Wait(MessageReceivedAsync);
        }
    }
}

public string getTelegramIDFromUserName(string username)
{
    return username;
}

【问题讨论】:

    标签: c# azure botframework bots telegram


    【解决方案1】:

    您需要使用他们的用户名和用户 ID 将来自您的机器人用户的消息存储在一个表中。这将比第二次调用查找 ID 号更容易,特别是因为电报允许多个相同的用户名。这些与每条消息一起发送,但电报也不包括一个端点来区分同一聊天中的“冲突”名称。

    这是一个在返回消息中回显电报用户 ID 和名字的实现。这里的关键是从消息中获取 ID 本身,这是使用

    message.ChannelData.message.from.id
    

    message.ChannelData.message.from.first_name
    

    这些字段包含在从电报发送到您的机器人的所有消息中。您可以在可以访问消息的任何地方使用它们来存储用户 ID 或使用它拨打电话。

    完整的方法如下所示:

    public async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> argument)
            {
                var message = await argument;
    
                if (message.ChannelId == "telegram")
                {
                    await context.PostAsync($"Your userid is {message.ChannelData.message.from.id} and your name is {message.ChannelData.message.from.first_name}");
                }
                else { 
                    await context.PostAsync($"You said {message.Text}"); //non-telegram stuff
                }
                context.Wait(MessageReceivedAsync);
    
            }
    

    if 检查电报不一定是分离通道功能的最佳方式,但它可以表示这是纯电报代码。你可以找到更多关于电报 API 包含在你的机器人调用中的信息here.

    【讨论】:

      猜你喜欢
      • 2017-05-10
      • 1970-01-01
      • 1970-01-01
      • 2017-07-17
      • 2021-06-24
      • 2022-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多