All Projects β†’ luciorubeens β†’ Talquei

luciorubeens / Talquei

Licence: mit
πŸ€– Vue components to build webforms looking like a conversation

Projects that are alternatives of or similar to Talquei

Convform
A jQuery plugin that transforms a form into an interactive chat.
Stars: ✭ 141 (+56.67%)
Mutual labels:  chatbot, conversation, form
Chatbot Watson Android
An Android ChatBot powered by Watson Services - Assistant, Speech-to-Text and Text-to-Speech on IBM Cloud.
Stars: ✭ 169 (+87.78%)
Mutual labels:  chatbot, conversation
Conversation Tensorflow
TensorFlow implementation of Conversation Models
Stars: ✭ 143 (+58.89%)
Mutual labels:  chatbot, conversation
Native
Generate a form using JSON Schema and Vue.js
Stars: ✭ 382 (+324.44%)
Mutual labels:  component, form
Ai Chatbot Framework
A python chatbot framework with Natural Language Understanding and Artificial Intelligence.
Stars: ✭ 1,564 (+1637.78%)
Mutual labels:  chatbot, conversation
Chatterbot
ChatterBot is a machine learning, conversational dialog engine for creating chat bots
Stars: ✭ 11,813 (+13025.56%)
Mutual labels:  chatbot, conversation
SpaceFusion
NAACL'19: "Jointly Optimizing Diversity and Relevance in Neural Response Generation"
Stars: ✭ 73 (-18.89%)
Mutual labels:  chatbot, conversation
Form
The Form component allows you to easily create, process and reuse HTML forms.
Stars: ✭ 2,406 (+2573.33%)
Mutual labels:  component, form
Nouislider
noUiSlider is a lightweight, ARIA-accessible JavaScript range slider with multi-touch and keyboard support. It is fully GPU animated: no reflows, so it is fast; even on older devices. It also fits wonderfully in responsive designs and has no dependencies.
Stars: ✭ 5,127 (+5596.67%)
Mutual labels:  component, form
Vue Form Wizard
Vue.js 2 wizard
Stars: ✭ 1,053 (+1070%)
Mutual labels:  component, form
Selectivity
Modular and light-weight selection library
Stars: ✭ 1,113 (+1136.67%)
Mutual labels:  component, form
Botpress
πŸ€– Dev tools to reliably understand text and automate conversations. Built-in NLU. Connect & deploy on any messaging channel (Slack, MS Teams, website, Telegram, etc).
Stars: ✭ 9,486 (+10440%)
Mutual labels:  chatbot, conversation
Vue Form Json Schema
Create forms using JSON schema. Bring your components!
Stars: ✭ 253 (+181.11%)
Mutual labels:  component, form
Convai Bot 1337
NIPS Conversational Intelligence Challenge 2017 Winner System: Skill-based Conversational Agent with Supervised Dialog Manager
Stars: ✭ 65 (-27.78%)
Mutual labels:  chatbot, conversation
Vue Dynamic Form Component
Vue dynamic nested form component, support nested Object/Hashmap/Array. VueεŠ¨ζ€ε€šηΊ§θ‘¨ε•η»„δ»ΆοΌŒζ”―ζŒε΅Œε₯—对豑/Hashmap/数组。
Stars: ✭ 220 (+144.44%)
Mutual labels:  component, form
DSTC6-End-to-End-Conversation-Modeling
DSTC6: End-to-End Conversation Modeling Track
Stars: ✭ 56 (-37.78%)
Mutual labels:  chatbot, conversation
Seq2seqchatbots
A wrapper around tensor2tensor to flexibly train, interact, and generate data for neural chatbots.
Stars: ✭ 466 (+417.78%)
Mutual labels:  chatbot, conversation
Watbot
An Android ChatBot powered by IBM Watson Services (Assistant V1, Text-to-Speech, and Speech-to-Text with Speaker Recognition) on IBM Cloud.
Stars: ✭ 64 (-28.89%)
Mutual labels:  chatbot, conversation
Conversational Ui
Conversational interface web app example
Stars: ✭ 78 (-13.33%)
Mutual labels:  chatbot, conversation
React Places Autocomplete
React component for Google Maps Places Autocomplete
Stars: ✭ 1,265 (+1305.56%)
Mutual labels:  component

🧐 Why?

Forget the boring and non-intuitive forms. With talquei you can quickly build fantastic forms as in the image above.

Demo

πŸ’» Install

Install using your package manager:

$ yarn add talquei

Add into your app:

import Vue from 'vue'
import Talquei from 'talquei'

// import the styles 
import 'talquei/dist/talquei.min.css'

Vue.use(Talquei)

Or import into your component:

import { Talquei, TalqueiMessage } from 'talquei'

export default {
  components: {
    Talquei,
    TalqueiMessage
  }
}

βš™οΈ Usage

The Talquei component should wrapper any TalqueiMessage:

<template>
  <Talquei>
    <TalqueiMessage text="Hi! My name is Talquei!" />
    <TalqueiMessage text="I'm a plugin to help you." />
  </Talquei>
</template>

Request user input

You can request a user entry by prop or slot. The prop will basically inject your tag into a form and fill the entry in the v-model.

Example
<template>
  <Talquei>
    <TalqueiMessage text="What's your name?" />
    <TalqueiMessage
      v-model="name"
      :input="{ tag: 'text', placeholder: 'Enter your name' }"
      is-user
    />
  </Talquei>
</template>

<script>
export default {
  data: () => ({
    name: ''
  })
}
</script>

Format user input

When the user enters the text, you can format it using the prop template:

Example
<template>
  <Talquei>
    <TalqueiMessage
      :input="{ tag: 'text', placeholder: 'Enter your name' }"
      template="My name is {text}"
      is-user
    />
  </Talquei>
</template>

Predefined answers

If you need predefined answers (such as the select or radio tag) you can set input.type = 'select' and pass your object in the options field:

Example
<template>
  <Talquei>
    <TalqueiMessage text="Which front-end framework do you prefer?" />
    <TalqueiMessage
      v-model="name"
      :input="{ tag: 'select', options: frameworks }"
      is-user
    />
  </Talquei>
</template>

<script>
export default {
  data: () => ({
    frameworks: {
      vue: 'Vue.js',
      angular: 'AngularJS',
      ember: 'Ember.js'
    }
  })
}
</script>

Conditional messages

Use when you want the v-if attribute to display conditional messages:

Example
<template>
  <Talquei>
    <TalqueiMessage text="Which front-end framework do you prefer?" />
    <TalqueiMessage
      v-model="name"
      :input="{ tag: 'select', options: frameworks }"
      is-user
    />
    <TalqueiMessage text="What plugins do you usually use in your projects?" />
    <TalqueiMessage
      v-if="answer === 'vue'"
      v-model="plugin"
      :input="{ tag: 'text', placeholder: 'talquei' }"
      is-user
    />
  </Talquei>
</template>
</script>

Using slots

If you need to build more complex input (like validations, custom components) you can use slots. After the completion remeber to call the next() method from the Talquei component.

Example
<template>
  <Talquei ref="talquei">
    <TalqueiMessage text="Hello">
      <form @submit.stop="onSubmit">
        <input ref="input" type="text">
        <button>Ok</button>
      </form>
    </TalqueiMessage>
  </Talquei>
</template>

<script>
export default {
  methods: {
    onSubmit () {
      this.name = this.$refs.input.value
      this.$refs.talquei.next()
    }
  }
}
</script>

πŸ”Ž API

Talquei component

Props

Name Description Type Default
autoRun Starts the conversation when mounted Boolean true

Slots

Name Description
default Insert your TalqueiMessage here. Don't need a root element

Methods

init(): void

Use this method to start the conversation if you set autoRun to false.

next(): void

Search the next message. Nested messages will inject this method to call when finalizing typing.

TalqueiMessage component

Props

Name Description Type Default
input Request a user input See details Object undefined
isUser Define as a message written by the user Boolean false
text Text to be displayed, if isUser will not be typed String undefined
value Useful only for use in v-model String undefined
template Formats user input String {text}
input object

Will create a basic form from the tag informed, should not be defined if you prefer to use the slot.

  • tag: Valid tags are currently text or select.
  • options (select): Use this field to define an object with the available options.
  • placeholder (text): Set the placeholder of your input field.
  • type (text): Set the type of your input field. Default is text.

Slots

Name Description
default Use this if you need more complex or personalized user input
avatar Change the element used as avatar. Default is "πŸ€–"

🀝 Contribute

If you want to contribute to this project, please see our Contributing Guide.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].