intuit / benten Goto Github PK
View Code? Open in Web Editor NEWChatbot Development Framework (with Slack integration for Jira and Jenkins)
License: MIT License
Chatbot Development Framework (with Slack integration for Jira and Jenkins)
License: MIT License
Hi, I've installed and configured the bot but when I'm trying to create a new issue it displays the following error.
`Component/s is required.`
Chat log
jirabot APP [11:20 AM]
Ok! Give me the `Summary` of the story ?
António Carvalho [11:20 AM]
test
jirabot APP [11:20 AM]
Component/s ?
1 `DevOps` 2 `Web` 3 `Example`
António Carvalho [11:20 AM]
1
jirabot APP [11:20 AM]
Product ?
1 `Web1` 2 `Web2`
António Carvalho [11:20 AM]
1
jirabot APP [11:20 AM]
I am working on it
bot APP [11:20 AM]
An error occured when I tried to do this operation:
`Project is required.`
Application log
11:50:16.769 [ForkJoinPool.commonPool-worker-1] INFO c.i.b.channel.slack.SlackChannel - Found a conversation catalyst command for action: action_jira_comment_issue .Entering catalyst conversation.
11:50:16.771 [ForkJoinPool.commonPool-worker-1] INFO c.i.b.channel.slack.SlackChannel - Handling action action=action_jira_create, user=antonio.carvalho
11:50:16.949 [AsyncHttpClient-2-1] INFO a.s.rtm.SlackRealTimeMessagingClient - Slack RTM message : {"ok":true,"reply_to":0,"ts":"1542109816.017800","text":"I am working on it \n"}
11:50:17.289 [ForkJoinPool.commonPool-worker-1] ERROR c.i.benten.jira.BentenJiraClient - com.intuit.benten.jira.exceptions.BentenJiraException: Project is required.
java.lang.RuntimeException: com.intuit.benten.jira.exceptions.BentenJiraException: Project is required.
at com.intuit.benten.jira.http.JiraHttpClient.createIssue(JiraHttpClient.java:207)
at com.intuit.benten.jira.BentenJiraClient.createIssue(BentenJiraClient.java:161)
at com.intuit.benten.jira.actionhandlers.JiraCreateIssueActionHandler.handle(JiraCreateIssueActionHandler.java:61)
at com.intuit.benten.channel.slack.SlackChannel.lambda$null$2(SlackChannel.java:246)
at java.util.concurrent.CompletableFuture.uniAccept(CompletableFuture.java:656)
at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:632)
at java.util.concurrent.CompletableFuture$Completion.exec(CompletableFuture.java:443)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Caused by: com.intuit.benten.jira.exceptions.BentenJiraException: Project is required.
at com.intuit.benten.jira.http.JiraHttpClient.handleJiraException(JiraHttpClient.java:227)
at com.intuit.benten.jira.http.JiraHttpClient.createIssue(JiraHttpClient.java:200)
... 10 common frames omitted
Create benten-flickr-bolt which integrates with Flickr APIS https://www.flickr.com/services/api/ and exposes useful methods such as search for a photo based on a keyword that can be used in other action handlers.
Create a new benten-outlook-calendar-bolt that integrates with outlook calendar APIs. Expose useful methods that would provide information about schedule and free meeting rooms from slack.
Currently Slack is the only channel supported by BenTen. Create a web chat interface. So users who want to build bots using BenTen feature need not be tied to Slack. Implement a web channel implementation similar to Slack channel.
Currently BenTen only supports plain text conversations in slack add interactive button support in BenTen for slack conversations https://api.slack.com/docs/message-buttons
integrated my jenkins with the bot
when I use the key words "Search for a Jenkins Job test", it returns the correct list of jobs with the prefix that I specified - Expected
Now when I enter the key words "Build Jenkins Job test_mavenBuild" (build returned during earlier step), I'm getting below exception:
org.apache.http.client.HttpResponseException: No valid crumb was included in the request
at com.offbytwo.jenkins.client.validator.HttpResponseValidator.validateResponse(HttpResponseValidator.java:11)
at com.offbytwo.jenkins.client.JenkinsHttpClient.post(JenkinsHttpClient.java:239)
at com.offbytwo.jenkins.model.Job.build(Job.java:74)
at com.intuit.benten.BentenJenkinsClient.build(BentenJenkinsClient.java:98)
at com.intuit.benten.jenkins.actionhandlers.JenkinsBuildJobByJobNameActionHandler.handle(JenkinsBuildJobByJobNameActionHandler.java:26)
at com.intuit.benten.channel.slack.SlackChannel.lambda$null$2(SlackChannel.java:241)
at java.util.concurrent.CompletableFuture.uniAccept(CompletableFuture.java:656)
at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:632)
at java.util.concurrent.CompletableFuture$Completion.exec(CompletableFuture.java:443)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
17:12:41.667 [ForkJoinPool.commonPool-worker-0] ERROR c.i.b.channel.slack.SlackChannel - com.intuit.benten.jenkins.exceptions.BentenJenkinsException: No val
id crumb was included in the request
java.util.concurrent.CompletionException: com.intuit.benten.jenkins.exceptions.BentenJenkinsException: No valid crumb was included in the request
at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:273)
at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:280)
at java.util.concurrent.CompletableFuture.uniAccept(CompletableFuture.java:659)
at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:632)
at java.util.concurrent.CompletableFuture$Completion.exec(CompletableFuture.java:443)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Caused by: com.intuit.benten.jenkins.exceptions.BentenJenkinsException: No valid crumb was included in the request
at com.intuit.benten.BentenJenkinsClient.build(BentenJenkinsClient.java:121)
at com.intuit.benten.jenkins.actionhandlers.JenkinsBuildJobByJobNameActionHandler.handle(JenkinsBuildJobByJobNameActionHandler.java:26)
at com.intuit.benten.channel.slack.SlackChannel.lambda$null$2(SlackChannel.java:241)
at java.util.concurrent.CompletableFuture.uniAccept(CompletableFuture.java:656)
... 6 common frames omitted
org.apache.http.client.HttpResponseException: No valid crumb was included in the request
at com.offbytwo.jenkins.client.validator.HttpResponseValidator.validateResponse(HttpResponseValidator.java:11)
at com.offbytwo.jenkins.client.JenkinsHttpClient.post(JenkinsHttpClient.java:239)
at com.offbytwo.jenkins.model.Job.build(Job.java:74)
at com.intuit.benten.BentenJenkinsClient.build(BentenJenkinsClient.java:98)
at com.intuit.benten.jenkins.actionhandlers.JenkinsBuildJobByJobNameActionHandler.handle(JenkinsBuildJobByJobNameActionHandler.java:26)
at com.intuit.benten.channel.slack.SlackChannel.lambda$null$2(SlackChannel.java:241)
at java.util.concurrent.CompletableFuture.uniAccept(CompletableFuture.java:656)
at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:632)
at java.util.concurrent.CompletableFuture$Completion.exec(CompletableFuture.java:443)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
17:14:10.836 [ForkJoinPool.commonPool-worker-2] ERROR c.i.b.channel.slack.SlackChannel - com.intuit.benten.jenkins.exceptions.BentenJenkinsException: No val
id crumb was included in the request
java.util.concurrent.CompletionException: com.intuit.benten.jenkins.exceptions.BentenJenkinsException: No valid crumb was included in the request
at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:273)
at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:280)
at java.util.concurrent.CompletableFuture.uniAccept(CompletableFuture.java:659)
at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:632)
at java.util.concurrent.CompletableFuture$Completion.exec(CompletableFuture.java:443)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Caused by: com.intuit.benten.jenkins.exceptions.BentenJenkinsException: No valid crumb was included in the request
at com.intuit.benten.BentenJenkinsClient.build(BentenJenkinsClient.java:121)
at com.intuit.benten.jenkins.actionhandlers.JenkinsBuildJobByJobNameActionHandler.handle(JenkinsBuildJobByJobNameActionHandler.java:26)
at com.intuit.benten.channel.slack.SlackChannel.lambda$null$2(SlackChannel.java:241)
at java.util.concurrent.CompletableFuture.uniAccept(CompletableFuture.java:656)
... 6 common frames omitted
Integrate with Iky ( https://github.com/alfredfrancis/ai-chatbot-framework )
Click on the Link given in try it out section for joining slack,
Create account page for #SLACK opens and displays below message
"This invite link is no longer active.
Please check with the person who shared it with you to see if there's a new link available."
Integrate with https://rocket.chat as an alternative to slack
Create benten-google-calendar bolt that integrates with google calendar. Expose useful methods which can be used in other action handlers. A sample conversation could be show me my appointments in the next 2 hrs
.
Create benten-hacker-news bolt that would expose useful methods to be used in action handlers
https://github.com/HackerNews/API
Getting alerts on stuck jobs deployment (alert me on #job_number on X time units)
Notify me when job is failing
Notification via Email
Create a new bolt in BenTen (similar to benten-jira bolt integrates with a weather API like https://openweathermap.org/api.
Create helper methods to get data from the weather API which can be used in other Action Handlers. An example conversation would be How is the weather looking like in the next 2 hours in Bangalore ?
and the bot would reply with the weather data for next 2 hours in Bangalore.
A good add-on would be to provide the flexibility to include/exclude domain name in the usernames.
For example a user could have a user name on slack as abc.xyz and [email protected] on JIRA (edited)
BenTen doesn't work with the users in our community as they have domain name appended in their JIRA usernames
Caused by: org.springframework.validation.BindException: org.springframework.boot.bind.RelaxedDataBinder$RelaxedBeanPropertyBindingResult: 1 errors
Field error in object 'server' on field 'environment': rejected value [local]; codes [typeMismatch.server.environment,typeMismatch.environment,typeMismatch.org.springframework.core.env.Environment,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [server.environment,environment]; arguments []; default message [environment]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'org.springframework.core.env.Environment' for property 'environment'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'org.springframework.core.env.Environment' for property 'environment': no matching editors or conversion strategy found]
at org.springframework.boot.bind.PropertiesConfigurationFactory.checkForBindingErrors (PropertiesConfigurationFactory.java:359)
at org.springframework.boot.bind.PropertiesConfigurationFactory.doBindPropertiesToTarget (PropertiesConfigurationFactory.java:276)
at org.springframework.boot.bind.PropertiesConfigurationFactory.bindPropertiesToTarget (PropertiesConfigurationFactory.java:240)
at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.postProcessBeforeInitialization (ConfigurationPropertiesBindingPostProcessor.java:330)
at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.postProcessBeforeInitialization (ConfigurationPropertiesBindingPostProcessor.java:292)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization (AbstractAutowireCapableBeanFactory.java:409)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1620)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:555)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:483)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject (AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:202)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType (DefaultListableBeanFactory.java:519)
at org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizerBeanPostProcessor.getCustomizers (EmbeddedServletContainerCustomizerBeanPostProcessor.java:82)
at org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizerBeanPostProcessor.postProcessBeforeInitialization (EmbeddedServletContainerCustomizerBeanPostProcessor.java:72)
at org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizerBeanPostProcessor.postProcessBeforeInitialization (EmbeddedServletContainerCustomizerBeanPostProcessor.java:59)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization (AbstractAutowireCapableBeanFactory.java:409)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1620)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:555)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:483)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject (AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:202)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.getEmbeddedServletContainerFactory (EmbeddedWebApplicationContext.java:199)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer (EmbeddedWebApplicationContext.java:162)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh (EmbeddedWebApplicationContext.java:134)
at org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:537)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh (EmbeddedWebApplicationContext.java:122)
at org.springframework.boot.SpringApplication.refresh (SpringApplication.java:693)
at org.springframework.boot.SpringApplication.refreshContext (SpringApplication.java:360)
at org.springframework.boot.SpringApplication.run (SpringApplication.java:303)
at BentenStarterApplication.main (BentenStarterApplication.java:50)
at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:498)
at org.springframework.boot.maven.AbstractRunMojo$LaunchRunner.run (AbstractRunMojo.java:527)
at java.lang.Thread.run (Thread.java:748)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.502 s
[INFO] Finished at: 2018-10-31T11:57:46+05:30
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.5.10.RELEASE:run (default-cli) on project benten-starter: An exception occurred while running. null: InvocationTargetException: Unable to start embedded container; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'tomcatEmbeddedServletContainerFactory' defined in class path resource [org/springframework/boot/autoconfigure/web/EmbeddedServletContainerAutoConfiguration$EmbeddedTomcat.class]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'serverProperties': Could not bind properties to ServerProperties (prefix=server, ignoreInvalidFields=false, ignoreUnknownFields=true, ignoreNestedProperties=false); nested exception is org.springframework.validation.BindException: org.springframework.boot.bind.RelaxedDataBinder$RelaxedBeanPropertyBindingResult: 1 errors
[ERROR] Field error in object 'server' on field 'environment': rejected value [local]; codes [typeMismatch.server.environment,typeMismatch.environment,typeMismatch.org.springframework.core.env.Environment,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [server.environment,environment]; arguments []; default message [environment]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'org.springframework.core.env.Environment' for property 'environment'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'org.springframework.core.env.Environment' for property 'environment': no matching editors or conversion strategy found]
Create benten-twitter bolt that integrates with twitter apis and exposes useful methods like search twitter by a certain word, get latest tweets or post a tweet etc..
It should have helper methods to send mails via GMail SMTP server which can be used in action handlers.
Hello there,
Benten purpose seems very interesting ! Just want to try it through the official benten slack channel but seems it doesn't work anymore.
Could you give us a status regarding this project ? Does the slack channel is still valid and the demo is up ?
Thanks a lot.
Implement a ScheduledAction similar to ActionHandler.
While ActionHandler is triggered by a conversation from the chatbot ScheduledAction will be trigged by a cron expression provided to it. For example when a class is annotated with @ScheduleAction(), it would be invoked as specified by the cron expression.
Integrate with Rasa NLP solution as an alternative to Dialogflow https://rasa.com
create benten-google-anlaytics-bolt that integrates with google analytics APIs
https://developers.google.com/analytics/devguides/reporting/ and gives analytics about a website usage on slack or sends an email.
Dialog flow V1 APIs are going to be shut down on October 23rd 2019. We need to migrate Benten from V1 to V2 APIs of dialog flow.
With BenTen, Just curious if there has been any testing with Dialogflow list parameters or if this is just me that is experiencing these run-time errors (entirely possible that I'm doing something wrong with the Java code for my intent). I cannot seem to get it to successfully pass a DialogFlow parameter into BenTen through slack if the IsList checkbox is checked in dialog flow. unchecking that checkbox allows the code and the single string value to be passed and used successfully in my local testing. also, Looking at the mvn spring-boot console it seems to throw some run-time exceptions anytime Dialogflow sends a list parameter.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.