📄 autoreplyer.cs
字号:
using System;
using System.ComponentModel;
using Org.InteliIM;
using Org.InteliIM.Activities.Conversations;
namespace Org.InteliIM.Activities.Interactive
{
/// <summary>
/// 自动应答器
/// </summary>
public class AutoReplyer: Component
{
/// <summary>
/// 构造函数
/// </summary>
public AutoReplyer()
{
this.InitializeComponent();
}
private void InitializeComponent()
{
}
private IMClient client = null;
/// <summary>
/// 相关联的 IM 客户端对象
/// </summary>
public IMClient Client
{
get
{
return this.client;
}
set
{
this.client = value;
this.UpdateConversationState();
}
}
private Conversation conversation = null;
/// <summary>
/// 相关联的谈话对象
/// </summary>
public Conversation Conversation
{
get
{
return this.conversation;
}
set
{
this.conversation = value;
this.UpdateConversationState();
}
}
private AbstractEngine engine = null;
/// <summary>
/// 相关联的自动应答引擎
/// </summary>
public AbstractEngine Engine
{
get
{
return this.engine;
}
set
{
this.engine = value;
this.UpdateConversationState();
}
}
private bool enabled = false;
/// <summary>
/// 是否启用
/// </summary>
public bool Enabled
{
get
{
return this.enabled;
}
set
{
this.enabled = value;
this.UpdateConversationState();
}
}
/// <summary>
/// 刷新谈话状态(事件)
/// </summary>
private void UpdateConversationState()
{
if(this.Enabled)
{
if(this.Conversation != null)
{
this.Conversation.ChatMessageReceived +=new ChatMessageReceivedEventHandler(Conversation_ChatMessageReceived);
}
}
else
{
if(this.Conversation != null)
{
this.Conversation.ChatMessageReceived -= new ChatMessageReceivedEventHandler(Conversation_ChatMessageReceived);
}
}
}
private void Conversation_ChatMessageReceived(object sender, ChatMessageReceivedEventArgs e)
{
if(this.Enabled && this.Client != null
&& this.Engine != null && this.Conversation != null
&& this.Engine.CurrentStatus != null
&& e.From != this.Client.User.Id)
{
string expr = e.Message.Content;
this.Engine.CurrentStatus.Accept(expr);
Status nextStatus = this.Engine.CurrentStatus.NextStatus;
String strResult = null;
if (nextStatus != null)
{
this.Engine.CurrentStatus = nextStatus;
strResult = this.Engine.CurrentStatus.getDisplayString();
}
else
{
strResult = "系统已经完成服务,欢迎再次使用.";
}
ChatMessage message = new ChatMessage();
message.Content = strResult;
this.Client.Chat(this.Conversation, message);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -