本发明提供一种
即时通讯软件客户端定制机器人的方法及系统,用以解决 现有技术中存在由于聊天机器人由信息服务商提供而导致的不能有效分担用 户的交流工作以实现IM秘书功能的问题。
本发明方法包括:
一种即时通讯软件客户端定制机器人的方法,该方法包括步骤:
向用户提供定义即时通讯软件客户端自动执行的动作的操作
接口;
根据用户在所述操作接口完成的操作获得对应的脚本,该脚本为直接执行 所述动作的动作类型脚本,或为按动作执行的条件执行所述动作的触发类型脚 本;
根据用户设置的脚本之间的相互关系生成对应的配置文件,该配置文件中 至少定义需要启用的脚本;
在即时通讯软件客户端根据所述配置文件加载需要启用的脚本,以及在加 载脚本后执行动作类型脚本中定义的动作,和/或监控触发类型脚本中定义的动 作执行的条件,并在条件发生时执行该触发类型脚本中定义的动作。
根据上述方法:
所述操作接口为图形化的操作界面。
所述触发类型脚本中还定义脚本的触
发条件,该触发条件为接收到即时消 息、接收到客户端状态指示和更改联系人信息之一或多种组合。
所述根据用户在所述操作接口完成的操作获得对应的脚本是指用户通过 所述操作接口根据脚本语法采用脚本语言直接编写脚本;或是指用户编辑所述 操作接口提供的预定义语言串,根据编辑后的语言串形成脚本;或是指用户根据 所述操作接口提供的向导工具的指示定义任务,根据定义的任务生成脚本。
所述配置文件中还定义有脚本的优先级,在即时通讯软件客户端按该优先 级确定执行脚本的顺序。
所述操作接口向用户提供包含所有脚本的列表,用户通过调整该列表中脚 本的
位置设置脚本之间的相互关系。
所述操作接口向用户提供脚本列表时,按原配置文件中定义的脚本之间的 相互关系确定脚本在该列表中的位置。
一种即时通讯软件客户端机器人的定制系统,包括:
生成模
块,用于根据用户在其提供的操作接口完成的操作获得对应的脚 本,该脚本为直接执行所述动作的动作类型脚本,或为按动作执行的条件执行 所述动作的触发类型脚本;
配置模块,用于根据用户通过所述操作接口设置的脚本之间的相互关系生 成对应的配置文件,该配置文件中至少定义需要启用的脚本;
存储模块,用于存储所述脚本和对应的配置文件;
执行模块,用于在即时通讯软件客户端根据所述配置文件的定义加载需要 启用的脚本,以及执行动作类型脚本中定义的动作,和/或监控触发类型脚本中 执行动作的条件,并在条件发生时执行该触发类型脚本中定义的动作。
其中,所述生成模块包括:
第一单元,用于向用户提供根据脚本语法采用脚本语言直接编写脚本的操 作接口;
第二单元,用于向用户提供编辑预定义语言串,并根据编辑后的语言串形 成脚本的操作接口;
第三单元,用于向用户提供向导工具以定义要执行的任务,根据定义的任 务生成脚本的操作接口。
所述操作接口为图形化的操作界面。
所述触发类型脚本中还定义脚本的触发条件,该触发条件为接收到即时消 息、接收到客户端状态指示和更改联系人信息之一或多种组合。
所述操作接口向用户提供包含所有脚本的列表,用户通过调整该列表中脚 本的位置设置脚本之间的相互关系。
本发明有益效果如下:
1、在本发明中,即时通讯软件客户端执行由用户自行定义的客户端动作, 实现了客户端定制机器人,该机器人可以部分分担用户的交流工作,实现IM 秘书的功能。
2、用户通过图形化的操作接口自行定义即时通讯软件客户端自动执行的 动作,操作简单方便,实用性强,有利于普及客户端定制机器人。
3、根据用户通过所述操作接口定义的动作生成的脚本种类丰富,在加载 执行之后,能在即时通讯软件客户端自动产生出各种各样的IM秘书,并且用 户可通过论坛相互交流,进一步丰富脚本的种类,提高IM秘书的自动化
水平 和服务
质量。
附图说明
图1为本发明
实施例中客户端机器人定制系统的结构示意图;
图2为本发明实施例中通过向导工具生成脚本的
流程图;
图3为本发明实施例中客户端机器人定制系统中生成模块的结构示意图;
图4为本发明实施例中生成配置文件的流程图;
图5为本发明实施例中执行用户定义的动作的流程图。
为了解决现有技术中存在由于聊天机器人由信息服务商提供而导致的不 能有效分担用户的交流工作以实现IM秘书功能的问题,在本发明中,即时通 讯软件客户端根据用户自行定义的客户端动作生成脚本及对应的配置文件,并 由按照配置文件的定义加载执行脚本中用户定义的动作。
所述脚本中包括脚本类型和用户定义的动作,其中,脚本类型分为按触发 条件执行所述动作的触发类型脚本(TRIGGER)和直接执行所述动作的动作 类型脚本(ACTION)。当所述脚本为触发类型脚本时,所述脚本中还包括触发 条件和执行所述动作的条件,其中,触发条件为客户端机器人接收到的其他用 户的信息类型,如即时消息(IM_MSG)、客户端状态指示(STATUS_CHARGE) 和更改联系人信息(CHANGE_CONTACT)等信息类型之一或多种组合。下面 给出所述脚本的一种格式:
**************************************
**************************************
#Script_Type
#Info_Type
#Condition
#Action
**************************************
其中,#Script_Type为脚本类型,#Info_Type为触发类型脚本中的触发条 件,#Condition为触发类型脚本中执行所述动作的条件,#Action为要执行的动 作。
下面给出脚本的几个具体的例子如下:
**************************************
问候.rbt
**************************************
#Script_Type
TRIGGER
#Info_Type
IM_MSG
#Condition
MSG_CONTENT=″*你好*″
#Action
@SendImMsg$CONTACTID
″$NICKNAME您好!″
@SendImMsg_End
**************************************
上述问候.rbt脚本为一种触发类型脚本,客户端机器人在接收到其他用户 发给他的消息后,若确定接收到的其他用户的消息符合“*你好*”的格式,即 包含“你好”两个字,就自动向所述其他用户发送“某某某您好!”的回复信 息。
上述脚本中的@SendImMsg和@SendImMsg_End为内置的函数名, $CONTACTID和$NICKNAME为内置的变量名,该内置函数名和内置变量名 对应于系统中预先定义的程序,在收到其他用户的消息时,$CONTACTID对 应的程序指示发送消息过来的联系人,$NICKNAME对应的程序指示所述联系 人的昵称,若是陌生人昵称为空。
**************************************
产品询问.rbt
**************************************
#Script_Type
TRIGGER
#Info_Type
IM_MSG
#Condition
MSG_CONTENT=″*请问*产品*″
#Action
@SendImMsg$CONTACTID
″$NICKNAME您好!我是$MYNAME的机器秘书!″
″我公司目前主要产品:电
冰箱,
洗衣机,我可以给您提供单价,月产量等信息。″
″如果你想了解详细资料,请按如下格式提问:″
″我想知道电冰箱的单价″
@SendImMsg_End
**************************************
上述产品询问.rbt脚本为一种触发类型脚本,客户端机器人在接收到其他 用户发给他的消息后,若确定接收到的其他用户的消息符合“*请问*产品*” 的格式,即包含“请问”和“产品”两个词,就自动向所述其他用户发送上述 脚本中预先定义的内容。$MYNAME也是内置变量名,其所对应的程序指示定 制机器人的客户端用户的姓名。
**************************************
产品详细咨询.rbt
**************************************
#Script_Type
TRIGGER
#Info_Type
IM_MSG
#Condition
MSG_CONTENT=″我想知道(%1)的(%2)″
#Action
@Var product:=%1
@Var key:=%2
@If%product=″电冰箱″then
@If%key=″单价″then
@SendImMsg$CONTACTID
″目前电冰箱的单价是2500元/台″
@SendImMsg_End
@ElseIf%key=″月产量″then
@SendImMsg$CONTACTID
″目前电冰箱的月产量是1000台/月″
@SendImMsg_End
@If_End
@ElseIf
@If%key=″单价″then
@SendImMsg$CONTACTID
″目前洗衣机的单价是1000元/台″
@SendImMsg_End
@ElseIf%key=″月产量″then
@SendImMsg$CONTACTID
″目前洗衣机的月产量是2000台/月″
@SendImMsg_End
@If_End
@Else
@SendImMsg$CONTACTID
″我不明白你想问的是什么产品。″
″我公司目前主要产品:电冰箱,洗衣机,我可以给您提供单价,月产量等方面的 信息。″
″如果你想了解详细资料,请按如下格式提问:″
″我想知道电冰箱的单价″
@SendImMsg_End
@If_End
**************************************
上述产品详细咨询.rbt脚本为一种触发类型脚本,和产品询问.rbt脚本联合 使用,客户端机器人在接收到其他用户发给他的消息后,若确定接收到的其他 用户的消息符合“我想知道(*)的(*)”的格式,就按照上述脚本中预先定 义的内容,自动回答所述其他用户的提问。上述脚本中涉及条件语句的用法 (@If……@ElseIf……@eElse……@If_End)。
**************************************
自动应答.rbt
**************************************
#Script_Type
TRIGGER
#Info_Type
IM_MSG
#Condition
#Action
@Function Repay1(@Var id)
@SendImMsg%id
″我在开会中,有事情给我留言!″
@SendImMsg_End
@Function_End
@Function Repay2(@Var id)
@SendImMsg%id
″我在8-5开网络电话产品会议,有急事请打我手机13188888888。″
@SendImMsg_End
@Function_End
@If@NICKNAME=″小王″then
%Repay 1($CONTACTID)
@ElseIf@NICKNAME=″小李″then
%Repay 1($CONTACTID)
@Else
%Repay2($CONTACTID)
@If_End
**************************************
上述自动应答.rbt脚本为一种触发类型脚本,客户端机器人在接收到其他 用户发给他的消息后,不管是什么消息,均按照Action中
指定的内容,自动回 复给这个用户。若所述其他用户为小王或小李,则向小王或小李发送“我在8-5 开网络电话产品会议,有急事请打我手机13188888888”;若为除小王或小李以 外的其他人,则向该其他人发送“我在开会中,有事情给我留言!”。上述脚本 中涉及函数的定义和使用(@Function……@Function_End)。
**************************************
催促小王开会.rbt
**************************************
#Script_Type
ACTION
#Info_Type
#Condition
#Action
@Loop 3
@SendImMsg″wangxx″
″小王,快点去8-5开会!″
@SendImMsg_End
@Sleep 5
@Loop_End
**************************************
上述催促小王开会.rbt脚本为一种动作类型脚本,无触发条件,无作出动 作的条件,而是直接作出动作。其中,@Sleep N为内置函数名,对应的程序 的功能为休眠N(N=5)秒钟,上述脚本中还涉及循环语句的使用方法(@Loop N……@Loop_End)。
参阅图1所示,本实施例中客户端机器人的定制系统包括生成模块100、 配置模块101、存储模块102、执行模块103;所述生成模块100,用于向用户 提供定义即时通讯软件客户端自动执行的动作的操作接口,并根据用户通过所 述操作接口定义的动作生成对应的脚本,该脚本为直接执行所述动作的动作类 型脚本,或为按触发条件执行所述动作的触发类型脚本;所述配置模块101, 用于根据用户设置的脚本之间的相互关系生成对应的配置文件,该配置文件中 至少定义需要启用的脚本;所述存储模块102,用于存储所述脚本和对应的配 置文件;所述执行模块103,用于在
即时通信软件客户端根据所述配置文件加 载需要启用的脚本,以及在加载脚本后执行动作类型脚本中定义的动作,和/ 或监控触发类型脚本中执行定义的动作的条件,并在条件发生时执行该触发类 型脚本中定义的动作。
为了方便普及客户端定制机器人,在通过脚本语法函数集编写脚本的
基础 上,本发明为用户提供一个操作接口,该操作接口为一个图形化的操作界面, 用户可通过该操作接口定义即时通讯软件客户端自动执行的动作;所述生成模 块100根据用户通过所述操作接口定义的动作生成对应的脚本。所述操作接口 还附带有几个实用的脚本的例子供用户参考。
所述生成模块100根据用户在所述操作接口完成的操作获得对应的脚本有 三种模式:
第一种、用户通过所述操作接口根据脚本语法采用脚本语言直接编写脚 本。
第二种、用户编辑所述操作接口提供的预定义语言串,根据编辑后的语言 串形成脚本。例如,操作接口预先定义好了2个自然语言串:1为收到一条含 有“某某内容”的消息,2为回复“某某内容”。用户先后选择1和2两个自然 语言串,同时
修改其中的“某某内容”字样,即在编辑完成后自动生成一个包 含用户定义的动作的脚本。如选择1收到一条含有“某某内容”的消息,把“某 某内容”修改成“你好”;再选择2回复“某某内容”,把“某某内容”修改成 “您好!”,编辑完成后自动生成与《问候.rbt》类似的脚本。
第三种、用户根据所述操作接口提供的向导工具的指示定义要执行的任 务,根据定义的任务生成脚本。
参阅图2所示,通过向导工具生成脚本的流程如下:
步骤200、启动向导。
步骤201、向导询问用户待生成的脚本是否为触发类型脚本,若是,则继 续步骤202;若不是,即此时待生成的脚本为动作类型脚本,则进行步骤204 的处理。
步骤202、当待生成的脚本为触发类型脚本时,向导进一步询问用户以哪 种行为作为触发条件;此时用户可在即时消息、状态指示、增加联系人等触发 条件中根据需要选择。
步骤203、当用户选择以即时消息作为触发条件时,向导进一步询问用户 执行所定义的动作的条件;如选择包含“某某内容”的消息,同时把“某某内 容”修改成“你好”。
步骤204、向导询问用户所要执行的动作,根据该动作生成脚本;如用户 选择回复“某某内容”的消息,同时把“某某内容”修改成“您好!”,即生成 和《问候.rbt》类似的脚本;或者,用户选择发送“某某内容”的消息,同时 把“某某内容”修改成“小王,快点去8-5开会!”,即生成和《催促小王开会.rbt》 类似的脚本。
图2所示流程说明了动作类型脚本以及触发类型脚本中触发条件为接收到 即时消息时的脚本生成流程,在触发类型脚本中,触发条件为接收到客户端状 态指示、更改联系人信息等信息类型时的脚本生成流程与上述流程类似。
参阅图3所示,所述生成模块100包括:第一单元300、第二单元301、 第三单元302;所述第一单元300,用于向用户提供根据脚本语法采用脚本语 言直接编写脚本的操作接口;所述第二单元301,用于向用户提供编辑预定义 语言串,并根据编辑后的语言串形成脚本的操作接口;所述第三单元302,用 于向用户提供向导工具以定义要执行的任务,根据定义的任务生成脚本的操作 接口。上述脚本为直接执行所述动作的动作类型脚本,或为按动作执行的条件 执行所述动作的触发类型脚本。
随着条件类型,内置变量,内置函数的丰富,所述生成模块100根据用户 定义的动作,能产生各种各样的脚本。这些脚本在生成之后,由所述存储模块 102将其保存,并由所述执行模块103加载执行,从而在即时通讯软件客户端 自动产生出各种各样的IM秘书。进一步的,用户可以通过论坛相互交流,丰 富脚本的种类,提高IM秘书的自动化水平和服务质量。
在脚本生成之后,对于不同类型的脚本有不同的测试方法,比如对于在消 息收到之后自动回复的脚本,可以通过向虚拟客户端发送一条消息,并由所述 执行模块103做相应处理,以及判断处理结果是否正确来进行该脚本的测试。
所述配置模块101根据用户设置的脚本之间的相互关系生成对应的配置文 件;所述配置文件中定义需要启用的脚本、需要停用的脚本、以及脚本之间的 相互关系,如优先级等。例如,有些脚本是在简单的功能测试中用过的,或者 是在特定情况下使用的,这些脚本使用的情况比较少,但由于用户并不想删除 这些脚本,此时则可以将这些脚本停止使用,待需要时再启用。
参阅图4所示,所述配置模块101生成配置文件的流程如下:
步骤400、启动配置模块。
步骤401、查找IM软件安装路径下对应的机器人目录。
步骤402、读入该目录下所有的脚本(后缀.rbt),并建立包括该所有脚本 的列表。
步骤403、由用户在所述列表中设置脚本之间的相互关系,如设置脚本的 启用或停用、同时启动和同时停用的脚本优先级一致等,还可通过调整脚本在 列表中的次序,更改对应的脚本的优先级,如越靠上的脚本优先级越高。
步骤404、根据用户设置的脚本之间的相互关系生成对应的配置文件 (robot.rlt)并由所述存储模块将其保存,该文件可以单独导入和导出。
当再次启动所述配置模块101以生成配置文件时,首先读入最近一次保存 的robot.rlt配置文件,以该文件指示的脚本之间的相互关系建立包含所有脚本 的列表,在此基础上,用户通过调整脚本在列表中的位置重新设置脚本的相互 关系,生成对应的配置文件;或者,在当脚本列表需要更新时,用户在所述最 近一次保存的robot.rlt配置文件对应脚本列表中追加新增的脚本,在此基础上, 通过调整脚本在列表中的位置重新设置脚本的相互关系,生成对应的配置文 件;用户的前述操作在原配置文件基础上进行,这样相对减少了工作量。
所述配置模块101生成配置文件之后,自动重新启动所述执行模块103, 根据所述配置文件重新读入需要启动的脚本,调整新的优先级。
所述执行模块103为一个解析性的程序执行器,在执行所述脚本时,解析 脚本中的每一个内置函数名和内置变量名对应的函数操作和变量值。
在即时通讯软件客户端根据所述配置文件加载需要启用的脚本,以及在加 载脚本后执行动作类型脚本中定义的动作,和/或监控触发类型脚本中执行定义 的动作的条件,并在条件发生时执行该触发类型脚本中定义的动作。
参阅图5所示,所述执行模块103执行用户定义的动作的流程如下:
步骤500、启动执行模块。
步骤501、查找所述配置模块生成的robot.rlt配置文件,读入配置文件中 定义的需要启用的脚本。
步骤502、判断读入的脚本是否为触发类型脚本,若是,则继续步骤503; 若不是,即当读入动作类型脚本时,进行步骤505的处理。
步骤503、在确定读入的脚本为触发类型脚本时,所述执行模块进一步确 定该脚本对应的触发条件为即时消息。
步骤504、所述执行模块在该脚本对应的即时消息的监控队列中增加监控 该脚本中执行用户定义的动作的条件。例如,读入了《问候.rbt》,所述执行模 块即在即时消息的监控队列中增加监控“*你好*”消息,即当收到一条即时消 息时,所述执行模块根据该消息的内容,确定内存中ContactId和NickName 等相应变量的值,并查找接收到的消息字符串中是否包含“你好”两个字。
步骤505、所述执行模块在确定接收到的其他用户的消息符合用户定义的 动作发生的条件后,通过程序回调函数发送消息的接口,发送相应的回复消息 给所述其他用户;例如对应于《问候.rbt》,当所述接收到的消息字符串中包含 “你好”两个字,所述执行模块发送“$NickName您好!”给$ContactId联系人;
或者,所述执行模块直接起一条线程去独立完成动作类型脚本指定的任 务,完成任务后销毁线程。例如,读入《催促小王开会.rbt》,所述执行模块则 根据该动作类型脚本的定义,调用程序回调函数发送消息的接口,发送“小王, 快点去8-5开会!”的消息给wangxx,然后在执行Sleep 5的命令休眠5秒钟后, 再次执行向wangxx发送所述消息的任务。
图5所示流程说明了动作类型脚本以及触发类型脚本中触发条件为接收到 即时消息时的脚本执行流程,在触发类型脚本中,触发条件为接收到客户端状 态指示、更改联系人信息等信息类型时的脚本执行流程与上述流程类似。
从上述实施例可知,在本发明中,即时通讯软件客户端执行由用户自行定 义的客户端动作,实现了客户端定制机器人,该机器人可以部分分担用户的交 流工作,实现IM秘书的功能;进一步的,用户通过图形化的操作接口自行定 义即时通讯软件客户端自动执行的动作,操作简单方便,实用性强,有利于普 及客户端定制机器人;更进一步的,根据用户通过所述操作接口定义的动作生 成的脚本种类丰富,在加载执行之后,能在即时通讯软件客户端自动产生出各 种各样的IM秘书,并且用户可通过论坛相互交流,进一步丰富脚本的种类, 提高IM秘书的自动化水平和服务质量。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发 明的精神和范围。这样,倘若对本发明的这些修改和变型属于本发明
权利要求 及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。