Comment on page
Adding Decagon to your React Native app
This is a simple guide to adding the Decagon Chatbot to your React Native app. We will be relying on the
react-native-webview
component, pointing it to the custom mobile URL associated with your company.Make sure you have the
react-native-webview
package installed. You can install it by running:npm install react-native-webview
If you already have a container in your app to house the chat interface, you can simply drop the
Webview
component where you want it. The mobile URI for your company is https://decagon.ai/mobile/<your company>
.import { WebView } from 'react-native-webview';
export default function Chatbot() {
return (
// You can drop this Webview wherever you want to put the Chatbot
<WebView source={{ uri: 'https://decagon.ai/mobile/<your company>' }} style={{ flex: 1 }} />
);
}
And that's it! You're done.
To pass in user ID and metadata, you simple include them in your URL params. All URL params will get saved along with the conversation as metadata. For instance:
import { WebView } from 'react-native-webview';
export default function Chatbot() {
return (
// You can drop this Webview wherever you want to put the Chatbot
<WebView
source={{ uri: 'https://decagon.ai/mobile/<your company>?userId=123&name=bob&type=9' }}
style={{ flex: 1 }}
/>
);
}
If you don't yet have a place in your app to but the Chatbot (could be a bottom sheet sliding drawer, a separate page, etc), no problem! Here is a complete example of a bare-bones React Native App that relies on
KeyboardAvoidingView
to display the Chatbot.Here is
App.js
:import React from 'react';
import { StyleSheet, KeyboardAvoidingView, View } from 'react-native';
import { WebView } from 'react-native-webview';
const App = () => {
return (
<View style={styles.container}>
<KeyboardAvoidingView behavior='height' style={styles.bottomSheet}>
<WebView
source={{ uri: 'https://decagon.ai/mobile/<your company>' }}
style={styles.webView}
scrollEnabled={false}
/>
</KeyboardAvoidingView>
</View>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#000',
},
bottomSheet: {
flex: 1,
marginTop: '20%',
},
webView: {
flex: 1,
borderTopLeftRadius: 8,
borderTopRightRadius: 8
}
});
export default App;
Last modified 26d ago