How to Trigger API with Rivescript? - rivescript

First of all i'm new to this Rivescript which is used for making chat bots. can any one help me how to trigger Rest API which is already implemented in NodeJS. i heard that some <call> tag will help for this but i'm not getting how to do that. Any example will be appreciated. Thanks in advance.

We wanted to keep control on our side. So we ended up putting meta info in the rivescript file and wrote a custom parser which will make API call.
+ hi
- hi. | API:greeting
Parser splits the response by | and then all values on right side are for API. This can be extended to have any number of parameter to support all kinds of API calls.
This is NOT Rivescript way, but good thing is that it's flexible and allows you to do things in your favorite programming language (rather than depending on Rivescript).

Related

How to use exactTerms and excludeTerms with Google Custom Search JSON API

I've been working with Google Custom Search API and faced some inconveniences I hope you can help me with.
Google Custom Search API offers as a parameter in its call the possibility to search by an exact text as well as exclude it from results: exactTerms and excludeTerms. However, the q parameter is mandatory and cannot be ignored, so if I want to search only by an specific text I just can't.
So how can I do a query using JSON API that contains specifically the text I want? Does the q parameter work as the search form in Google?
If I want results including 'foo', should I do this:
service.cse().list(cx=const.SEARCH_ENGINE_KEY, q='"foo"').execute()
or this?:
service.cse().list(cx=const.SEARCH_ENGINE_KEY, q=None, exactTerms='foo').execute()
Thank you in advance for your time.
Due to the success on the answers (hehe) I'm posting my own conclusions. Please, if you've any facts regarding the original question, please post it.
I've been testing with some calls to Google CSE API and looks like you can pass to q parameter the same query you'd do in Google's main page textfield. So (at least for my needs), you don't need exactTerms and excludeTerms to get what I was trying to achieve.
Anyway, as I said before, if you know how to work with these parameters I'm sure everybody will thank you.

How to start ArangoDB-GraphQL-Express?

I looked at the support from ArangoDB, and google search, but it did not help me much...I am fresh in these topic, (but Polish proverb says that you should not be ashamed to ask questions).
my situation is as follows, I have quite a very extensive database, which I created by GUI-HTTP-ArangoDB (by importing further crafted JSONs, as collections of Verexs & Edges) I would like to link this database and dynamically depending on the query, display the resutat, only hmm I do not know how to connect it. is like a tutorial on the arango page to Node, but there is nothing to write like where and what to create, just they only described the next command that do something .. ech ...
I am looking for examples, or a step-by-step guide/tutorial..
I am asking you for help / support..
how in it, to find himself..
Well, there are two options I would use to connect Arango to GraphQL:
1 Use the Foxx micro services that live within Arango to create a Rest API. Then you can use wrap the Rest api in GraphQL. Here is the tutorial for creating the Foxx micro services :
https://docs.arangodb.com/3.3/Manual/Foxx/GettingStarted.html
And here is the tutorial to wrap the the rest api in GraphQL:
https://www.prisma.io/blog/how-to-wrap-a-rest-api-with-graphql-8bf3fb17547d/
2 Have the GraphQL Server be part of the Foxx microservices instead of the Rest Api as described here
https://docs.arangodb.com/3.3/Manual/Foxx/GraphQL.html
And here
https://mikewilliamson.wordpress.com/2017/03/24/arangodb-and-graphql/
Hope this helps!

Bulk extract with Authenticated Connector (import.io)

I am new to import.io and this forum.
I am trying to extract information from a target database where I have to run a query with an input. With help of the support, I successfully created the authenticated connector. With multiple inputs that have to be manually entered in the UI, it fetches the data properly.
The problem is I have more than 10,000 inputs to run, so it has to be in a form of bulk extraction. import.io support told me that they do not have this feature within their UI and suggested to use their API posted in here: http://api.docs.import.io/#!/Query_Methods/queryPost.
Could anyone walk me through to make a use of this? I just need a working script that takes multiple string lines as inputs and run the connector that I built and post the result. I am not very familiar with this kind of technology but I am very willing to learn.
Thanks all in advance!
I would be happy to walk you through a bit of an into. It will be a bit basic though since I don't know your specific use case.
Yes, support was correct. You will need to use the POST query in order to pass your authentication credentials as inputs.
I will break down this query by steps. Essentially, our API docs are just a simple UI to pass through your credentials, then you can generate a query API.
ID - This is the GUID of your connector. This information can be found at the end of the URL, like this: https://import.io/data/mine/?tag=CONNECTOR&id=33f4e828-25ce-40c4-948c-9b734c70d1ab
Query - This is where you will put the inputs from your connector in order to execute. Be sure to keep this in structured JSON or it will bring back errors when you are querying.
Once you have successfully entered that information you will query the API.
This will give you the request URL that you need to query the API.
If you have anymore questions, just let me know.
Thanks,
Meg

What does "consume an API" mean?

Here is an excerpt from an assignment I am currently doing:
Build a dummy app that:
Contains a REST API that operates over a single resource.
Contains a Backbone client that consumes that API and can list, show, create, update, and remove that resource.
My understanding was that the term "consume" implies total coverage of the API's exposed ressources. However, the assignment says "consumes that API and can [CRUD] that resource".
Is that sentence redundant or is my understanding of the term wrong?
(Bonus question: why searching Google for this question returns countless language-specific tutorials for "consuming an API" but none explain what the term actually means?).
To consume an API means to basically use any part of it from your application.
Consuming an API here means creating a client which can send requests to the API that you build.
It appears that you need to create and API which can handle Create, retrieve, update and delete (CRUD) of a resource. For instance if your REST api is to create a blog, your API should handle CRUD functions for the object/resource blogpost.
POST - Create a blog post
GET - Retrieve a blog post
PUT - Update a blog post
DELETE - Delete a blog post.
It is about the direction of the app's interaction with API - it either provides an API, or consumes it, so there are providers and consumers of API, and this is just a less general and ambiguous term than 'using'.
Simply consuming an API means using it in your application.
For, e.g., GET request to https://someapi/Users will give you all the users.
You need to request this URL https://someapi/Users to get all the users and then you can use it into your application.
I always think about Albert Einstein's quote of "If you can’t explain it to a six year old, you don’t understand it yourself." when someone asks a question that you might take for granted due to technical experience you have on a subject.
I think the following medium.com article does an excellent job explaining it: How do you explain API to a 5-year-old?
simply means : using the API.
You can do it with HTTP method (GET, POST, PUT, DELETE..) using something like Postman (Tool) or maybe you have a client app/library that calls these methods implicitly.

Problems with custom field name and webservices

I'm using Rally SOAP API to perform a query given a value for a custom field, via Java.
I get the error "java.lang.IllegalArgumentException: The char '0x1f' after 'return code: 401
' is not a valid XML character."
I've taken a look at the custom field name (name, not display name) and it has some blank chars in it. Can it be this the problem?
If yes, is it a safe operation to rename the custom field, since it is already in use?
Thanks in advance
You can always URLEncode anything that you are trying to send to your webservice, though it sounds like it may NOT be your problem
Have you thought of using the Java Toolkit for Rally REST API?
http://developer.rallydev.com/help/java-toolkit-rally-rest-api
REST is less brittle than SOAP and is the preferred way to access Rally's web services.