是否可以创建一个与一个用户管理多个对话的机器人?
我需要创建一个能够在随机聊天和电报之间建立联系的机器人。
例如,如果我不再使用Facebook Messenger,请创建一个机器人,将每个新的Facebook消息从我的帐户发送给我的电报号码。机器人将为每个发送我消息的独特Facebook用户创建一个新的对话。或者,如果它不可能,那么为每个新用户对话创建一个新的临时机器人并给我他的@name。
是否可以使用Telegram Bot API?
答案 0 :(得分:1)
你想要的是什么,因为你知道每个电报用户都有一个独特的电报聊天ID,所以如果你的朋友或用户直接向你的机器人发短信,你可以使用下面的代码从你自己的电报账号回复他们的消息。让机器人将其发送给相关用户:
if(update.Message.Text != null)
{
var req = new SendMessage(Your_Own_ChatID, "This message is sent from the user with chat ID: "+update.Message.Chat.Id.ToString()+"\n In order to reply it type the user's chat ID and add one comma then type in your text and tap on send.\nThe message:"+ update.Message.Text);
await bot.MakeRequestAsync(req);
continue;
}
else if (update.Message.Text.Contains(",") && update.Message.Chat.Id == Your_Own_ChatID)
{
string sender_chatID = update.Message.Text.Split(',').First();
string Message = update.Message.Text.Split(',').Last();
var req = new SendMessage(long.Parse(sender_chatID), Message);
await bot.MakeRequestAsync(req);
continue;
}
但是,如果您的用户将消息从Facebook发送给您,并且您希望机器人将其发送到您的电报帐户并使用Facebook API或其他方式通过机器人再次回复它们,那么必须改变的是:
取代发件人的聊天ID,您必须保存他/她的Facebook用户名并使用FB用户名而不是电报聊天ID进行回复。
请注意,此代码只是一个示例,当然将聊天ID和回复分开是一个简单的解决方案,但我的建议是使用内联或自定义键盘来回复消息,这样您甚至不会需要输入用户的ChatID或FB帐户。
此外,您还可以使用电报的回复功能,并检查回复是否为空,并找到您尝试回复的邮件发件人的聊天ID(或FB帐号或...),并直接发送回复给那个用户。
答案 1 :(得分:1)
根据最新的电报bot api,您可以制作多个机器人,但有一点至关重要的是机器人的API令牌 tha t 手动通过botFather 。您可以创建一个机器人并让其他机器人继承其功能,每次新用户向您发送消息时,都会向他/她分配机器人。到目前为止,这是可能的,但对于API令牌,您可以做的就是制作与Facebook好友一样多的机器人并将他们的api令牌存储在数据库中,并将其中一个api令牌传递给代表用户的机器人。 / p>
这是我认为可以解决你的问题,但api令牌部分有点奇怪,虽然你可以在主要机器人向你自己的帐户发送通知,当无符号api令牌的数量小于5时。 如你所知,Facebook好友的数量可以改变,任何时候任何人都可以给你发短信,因此必须有足够的令牌,因为每当其中一个人第一次给你发短信时,必须用预制的api令牌创建机器人并继承主机器人的功能。从那个时刻开始,那个令牌和那个机器人代表那个试图给你发信息的人。
此外,我认为您的机器人数量必须有限制 可以使用一个可以使用的电报帐户 不同的账户。
答案 2 :(得分:0)
使用此项目中使用的方法可以实现。
[https://github.com/idoco/intergram][1]
基本上,您为每个用户创建一个随机用户ID。为了回复该特定用户,您必须使用电报客户端中的回复消息方法。即...右键单击消息以回复它。