2012-10-26 14 views
5

ユーザー名(数値xxxx_xxxxxxまたはフルネーム)の@mention名を見つける方法はありますか?HipChatでHubotのユーザー名と@mention名を一致させよ

msg.messageオブジェクトには、メッセージの元の人物のid、jid、および名前を持つユーザーオブジェクトがあります。私は、その人の@mention名と、潜在的に彼らのメッセージに記されている人のユーザ名を見つけたいと思います。

答えて

3

私もこれも必要です。しかし、それはxmppメッセージではないので、ハブットはそれについて知りません。私は、あなたの名前をユーザのプロパティとして設定するコマンドを追加する必要があると思います。次のようなものがあります。

robot.respond /mentionname is @?(.+)$/i, (msg) -> 
    mentionname = msg.match[2] 

    user = robot.brain.userForId(msg.envelope.user.id) 
    user.mentionname = mentionname 

他のカスタムコマンドで調べることができます。 userForNameと同じように脳のuserForMentionNameに別のメソッドを追加します。これをur script initで脳に追加します。

userForMentionName = (name) -> 
    result = null 
    lowerName = name.toLowerCase() 

    for k of (robot.brain.data.users or { }) 
    mentionName = robot.brain.data.users[k]['mention_name']  
    if mentionName? and mentionName.toLowerCase() is lowerName 
     result = robot.brain.data.users[k] 
    result 

別の方法としては、ユーザ名またはmentionnameフィールドをチェックするためにuserForNameを変更することができ、それは他のものを壊すかもしれません。いずれにしても、あなたのurlのユーザ名が何であるかをhubotに伝える必要があります。または、hubot-hipchatアダプタがその情報を持っているかどうかを調べることができます。

- 編集 -

はすべてのことを無視:D hipchatアダプタは、脳に保存されているユーザーオブジェクトに「mention_name」フィールドを追加します。だからあなたがしなければならないことは、ユーザをループして、一致する言及名を持つものを見つけることです。

関連する問題