Reactjs 如何使用Dialogflow实现聊天机器人,并使用功能组件进行本机反应

Reactjs 如何使用Dialogflow实现聊天机器人,并使用功能组件进行本机反应,reactjs,react-native,dialogflow-es,react-native-gifted-chat,Reactjs,React Native,Dialogflow Es,React Native Gifted Chat,我正在使用react native normal workflow(不是expo),而且我的项目基于功能组件类型(没有类组件),所以如何实现它。我使用了react native天才聊天npm软件包。。我的dilogflow api正在工作,但是消息索引没有更新,因此我丢失了一些消息 这是我的密码 import React, { useState, useCallback, useEffect } from 'react' import { View } from 'react-native' i

我正在使用react native normal workflow(不是expo),而且我的项目基于功能组件类型(没有类组件),所以如何实现它。我使用了react native天才聊天npm软件包。。我的dilogflow api正在工作,但是消息索引没有更新,因此我丢失了一些消息

这是我的密码

import React, { useState, useCallback, useEffect } from 'react'
import { View } from 'react-native'
import { GiftedChat } from 'react-native-gifted-chat'
import { Dialogflow_V2 } from 'react-native-dialogflow';
import { dialogFlowConfig } from '../../config'
import styles from './styles'

export default function chatScreen(props) {

    const dabbaBot = {
        _id: 2,
        name: 'React Native',
        avatar: 'https://placeimg.com/140/140/any',
    }

    let welcomeMessage = {

        _id: 0,
        text: 'Hellooooo....How are you',
        createdAt: new Date(),
        user: dabbaBot

    }

    const [messages, setMessages] = useState([welcomeMessage]);
    const [messagelength, setMessageLength] = useState(0);





    useEffect(() => {
        

        Dialogflow_V2.setConfiguration(
            dialogFlowConfig.client_email,
            dialogFlowConfig.private_key,
            Dialogflow_V2.LANG_ENGLISH_US,
            dialogFlowConfig.project_id
        );

    }, [])

    function sendBotResponse(text) {

        let messageLength = messages.length + 2

        let msg = {
            _id: messageLength + 1,
            text,
            createdAt: new Date(),
            user: dabbaBot
        };


        console.log(msg._id)
        setMessages(messages);
        setMessages(previousMessages => GiftedChat.append(previousMessages, [msg]));


    }

    function handleGoogleResponse(result) {

        let text = result.queryResult.fulfillmentMessages[0].text.text[0];
        sendBotResponse(text);
    }


    const onSend = useCallback((messages = []) => {


        let messageLength = messages.length + 1

        let modifiedMessage = {
            text: messages[0].text,
            user: messages[0].user,
            _id: messageLength + 1,
            createdAt: new Date()
        }

        console.log(modifiedMessage._id)
        // // messages = messages.push(modifiedMessage)
        // // setMessages(messages)
        // setMessages(previousMessages => GiftedChat.append(previousMessages, [modifiedMessage]));

        setMessages(messages);
        setMessages(previousMessages => GiftedChat.append(previousMessages, [modifiedMessage]));


        let message = messages[0].text;
        console.log(message)

        Dialogflow_V2.requestQuery(
            message,
            result => handleGoogleResponse(result),
            error => console.log(error)
        );



    }, [])


    return (

        <View style={styles.maincontainer}>
            <GiftedChat
                messages={messages}
                onSend={messages => onSend(messages)}
                user={{
                    _id: 1
                }}
            />
        </View>
    )
}
import React,{useState,useCallback,useffect}来自“React”
从“react native”导入{View}
从“react native gifted chat”导入{GiftedChat}
从“react native Dialogflow”导入{Dialogflow_V2};
从“../../config”导入{dialogFlowConfig}
从“./styles”导入样式
导出默认功能聊天屏(道具){
常数dabbaBot={
_id:2,
名称:“反应本机”,
阿凡达:'https://placeimg.com/140/140/any',
}
让welcomeMessage={
_id:0,
短信:“你好……你好吗”,
createdAt:新日期(),
用户:dabbaBot
}
const[messages,setMessages]=useState([welcomeMessage]);
const[messagelength,setMessageLength]=useState(0);
useffect(()=>{
Dialogflow_V2.setConfiguration(
dialogFlowConfig.client_电子邮件,
dialogFlowConfig.private_密钥,
Dialogflow_V2.LANG_ENGLISH_US,
dialogFlowConfig.project\u id
);
}, [])
函数sendBotResponse(文本){
让messageLength=messages.length+2
让msg={
_id:messageLength+1,
文本,
createdAt:新日期(),
用户:dabbaBot
};
console.log(msg.\u id)
设置消息(消息);
setMessages(previousMessages=>giftechat.append(previousMessages,[msg]);
}
函数handleGoogleResponse(结果){
让text=result.queryResult.fulfillmentMessages[0].text.text[0];
发送响应(文本);
}
const onSend=useCallback((messages=[])=>{
让messageLength=messages.length+1
让modifiedMessage={
文本:消息[0]。文本,
用户:消息[0]。用户,
_id:messageLength+1,
createdAt:新日期()
}
console.log(modifiedMessage.\u id)
////messages=messages.push(modifiedMessage)
////设置消息(消息)
//setMessages(previousMessages=>GiftedChat.append(previousMessages,[modifiedMessage]);
设置消息(消息);
setMessages(previousMessages=>GiftedChat.append(previousMessages,[modifiedMessage]);
让消息=消息[0]。文本;
console.log(消息)
Dialogflow_V2.requestQuery(
消息
结果=>handleGoogleResponse(结果),
error=>console.log(错误)
);
}, [])
返回(
onSend(消息)}
使用者={{
_身份证号码:1
}}
/>
)
}

你找到解决方案了吗?@pragnesh没有我没有找到任何解决方案你找到任何解决方案了吗?@pragnesh没有我没有找到任何解决方案