PullString provides a powerful intent recognition engine that helps you interpret the meaning behind what a user says. There are also several other commercial intent services on the market, such as Google's API.ai, Microsoft's LUIS, Facebook's Wit.ai, and Amazon's Lex. If you have already invested the time to build your intents in one of these other systems, but your still want to use PullString’s superior dialog management, team based workflows, and rapid iteration, then we think you should be able to do that. As such, PullString provides integration with the following intent recognition services:
If you have intents and entities defined in any of these systems, then PullString can use those external intent services to attempt to resolve intents at runtime.
Note that you cannot use these external intent services to build Amazon Alexa projects, because Alexa requires the use of its own intent recognition engine.
When you set up your project in PullString Author, you can now specify an external intent service to use to resolve intents. You then provide the relevant authentication credentials to let PullString access your project in that service.
The Intents section of PullString’s Project Properties Dialog
PullString takes the security of your authentication credentials very seriously. We do not store your credentials on disk. Instead, we upload these to our server (over HTTPS) and generate a PullString-specific token. This PullString token is only useful for talking to our servers and is used to lookup your actual credentials behind our firewall. Even if this PullString token is compromised, your original credentials remain safe.
Once you’ve set up your intent service account, PullString will ask if you want to automatically sync the intents from that service into PullString. Syncing with the external service creates new PullString intents with the same names as those in the external system and it defines a correspondence between the PullString intent and the same intent in the external system. Similarly, for the entities that can be filled in by the intents in the external system, a PullString entity will be created, such as a label or counter.
You can write conversational content in PullString Author using these imported intents just as you normally would do with intents you had created by hand. Then, at runtime, when users type or speak, our AI engine asks the relevant intent service for the intent that best matches the user’s input. If you provide any rules in the import intents, then those rules will always match before the result from the external intent system. As noted above, this gives you the power to fix any incorrect matching that may arise from the use of the external service.
Note: you can only use "Intent" inputs to connect with external intent engines, i.e., we do not currently support "Rule" inputs that call out to external intents, such as "~intent1 ~intent2".
If you add or remove intents in the external service, you can easily re-import the latest definitions by going to the Intent Browser and clicking on the Sync button with the service name, e.g., "Sync Google API.ai".
Note that the Sync button will not be visible in the Intent Browser window if you have not selected an external intent service in the Project Properties dialog.
If you are already using one of these external intent services, it's worth highlighting a few ways in which combining them with PullString makes them even better.
Hybridized AI: PullString effectively turns these machine learning based intent engines into hybrid machine learning / rules-based systems. That is, you can still define rules for all of the intents that you import from API.ai, LUIS, and Wit.ai. This is useful, for example, if the machine learning system does not always pick the best intent for a given input, e.g., if it has been trained with insufficient inputs or inputs that are too broad. Or if you have a large number of intents that cause the machine learned solution to be less accurate because it’s less able to generalize to new inputs. In these cases, you can go in and immediately fix the problem by supplying a specific PullString rule to override the automatically derived intents from the external service.
Context Awareness: PullString provides a very flexible concept of context as part of its intent engine. This allows intents to be defined in specific local contexts, at activity-level contexts, and at global contexts. Additionally, the same intent can be reused in different contexts, potentially with different priorities assigned to them. By integrating an external intent service with PullString, you get to apply the same support for context awareness to that external system. For example, if the external service matches an intent that is not in the current local, activity, or global context, then PullString will ignore that intent.
Fallback Support: Some of the external intent engines will always match an intent, even if it's completely unrelated to what the user meant to say. These engines normally provide a confidence score with their result (from 0 to 1). So we let you specify a threshold score below which PullString will ignore the result from the external service and thereby allow any fallbacks that you've specified to be used.
Access to Non-Technical Users: The external intent services provide simple web-based interfaces that anyone can use to build and train intents. But in order to use the resulting models you have to be able to write code to connect to their Web API. However, by integrating these services with PullString, we make it possible for non-technical users to leverage the power of these intent recognition systems without having to know how to code.
On the flip side, one of the ways in which using these external services can make PullString better is that they can offer better support for non-English languages. So if you're building a bot in a language other than English, then using one of these external intent services through PullString may be of interest. (For more details on PullString multi-language support, see Languages.)