代码之家  ›  专栏  ›  技术社区  ›  Kaveesha Baddage

如何在react组件中拦截来自chatbot的消息?(Microsoft botframework网络帽)

  •  0
  • Kaveesha Baddage  · 技术社区  · 6 年前

    我必须根据查特博特的回复运行一个音乐(MP3文件)。所以我需要从我的react组件(或者使用纯js)中识别来自chatbot的回复。我该怎么做?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Nicolas R    6 年前

    您可以通过在 Github .

    如果你搜索 incoming 你去看看这些 lines 可能对你的需求很有意思:

    private handleIncomingActivity(activity: Activity) {
        let state = this.store.getState();
        switch (activity.type) {
            case "message":
                this.store.dispatch<ChatActions>({ type: activity.from.id === state.connection.user.id ? 'Receive_Sent_Message' : 'Receive_Message', activity });
                break;
    
            case "typing":
                if (activity.from.id !== state.connection.user.id)
                    this.store.dispatch<ChatActions>({ type: 'Show_Typing', activity });
                break;
        }
    }
    
        2
  •  0
  •   Kaveesha Baddage    6 年前

    谢谢你@nicolas R . 我更改了handleincomingactivity()函数,如下所示并发送 活动.text 我的chatbot react组件的值为使用回调将数据从子组件(chat.js)发送到父组件(我的react组件)。这里givetextforbot()是一个回调函数,用于将chatbot组件作为道具进行响应。

    Chat.prototype.handleIncomingActivity = function (activity) {
            var state = this.store.getState();
            switch (activity.type) {
                case "message":
                    this.store.dispatch({ type: activity.from.id === state.connection.user.id ? 'Receive_Sent_Message' :'Receive_Message' , activity: activity });
                    if(activity.from.id === "<appName>"){
                        this.props.giveTextForBot(activity.text);
                       }             
                break;
                case "typing":
                    if (activity.from.id !== state.connection.user.id)
                        this.store.dispatch({ type: 'Show_Typing', activity:activity });
                    break;
            }
    };