{"action":"created","comment":{"url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/pulls/comments/188459813","pull_request_review_id":120443029,"id":188459813,"diff_hunk":"@@ -9,36 +9,36 @@ public BotFrameworkPaths()\n         {\n             this.BasePath = \"api/\";\n             this.MessagesPath = \"messages\";\n-            this.ProactiveMessagesPath = \"messages/proactive\";\n+            this.ExternalEventsPath = \"events\";","path":"libraries/integration/Microsoft.Bot.Builder.Integration.AspNet.WebApi/BotFrameworkPaths.cs","position":5,"original_position":5,"commit_id":"e9d3d3ec22c9a4d33c970db23995e1f6f9325483","original_commit_id":"e9d3d3ec22c9a4d33c970db23995e1f6f9325483","user":{"login":"tomlm","id":17789481,"avatar_url":"https://avatars0.githubusercontent.com/u/17789481?v=4","gravatar_id":"","url":"https://api.github.com/users/tomlm","html_url":"https://github.com/tomlm","followers_url":"https://api.github.com/users/tomlm/followers","following_url":"https://api.github.com/users/tomlm/following{/other_user}","gists_url":"https://api.github.com/users/tomlm/gists{/gist_id}","starred_url":"https://api.github.com/users/tomlm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tomlm/subscriptions","organizations_url":"https://api.github.com/users/tomlm/orgs","repos_url":"https://api.github.com/users/tomlm/repos","events_url":"https://api.github.com/users/tomlm/events{/privacy}","received_events_url":"https://api.github.com/users/tomlm/received_events","type":"User","site_admin":false},"body":"> this.ExternalEventsPath = \"events\"; [](start = 11, length = 36)\r\n\r\nI don't understand this.  we already support external events via posting through directline.  We already have proactive samples on V3 which uses this pattern.  What are we solving here?","created_at":"2018-05-15T22:51:40Z","updated_at":"2018-05-15T22:51:40Z","html_url":"https://github.com/Microsoft/botbuilder-dotnet/pull/461#discussion_r188459813","pull_request_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/pulls/461","author_association":"COLLABORATOR","_links":{"self":{"href":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/pulls/comments/188459813"},"html":{"href":"https://github.com/Microsoft/botbuilder-dotnet/pull/461#discussion_r188459813"},"pull_request":{"href":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/pulls/461"}}},"pull_request":{"url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/pulls/461","id":182625685,"html_url":"https://github.com/Microsoft/botbuilder-dotnet/pull/461","diff_url":"https://github.com/Microsoft/botbuilder-dotnet/pull/461.diff","patch_url":"https://github.com/Microsoft/botbuilder-dotnet/pull/461.patch","issue_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/issues/461","number":461,"state":"open","locked":false,"title":"Integration library support for external events","user":{"login":"drub0y","id":284152,"avatar_url":"https://avatars3.githubusercontent.com/u/284152?v=4","gravatar_id":"","url":"https://api.github.com/users/drub0y","html_url":"https://github.com/drub0y","followers_url":"https://api.github.com/users/drub0y/followers","following_url":"https://api.github.com/users/drub0y/following{/other_user}","gists_url":"https://api.github.com/users/drub0y/gists{/gist_id}","starred_url":"https://api.github.com/users/drub0y/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/drub0y/subscriptions","organizations_url":"https://api.github.com/users/drub0y/orgs","repos_url":"https://api.github.com/users/drub0y/repos","events_url":"https://api.github.com/users/drub0y/events{/privacy}","received_events_url":"https://api.github.com/users/drub0y/received_events","type":"User","site_admin":false},"body":"This fixes what I was talking about in #420 where the integration libraries will now offer an endpoint for external events (from other systems outside the bot framework) to send `event` activities to the bot which can then do things _like_ triggering proactive conversations.\r\n\r\nThe previous implementation exposed this as a concept of `EnableProactiveMessaging` and expected just a `ConversationReference` to be `POST`ed to the endpoint, but that obviously made no sense. So now that's represented as `EnableExternalEvents` concept instead and is exposed via `/api/events` by default (path can be changed through configuration). It now expects a full `event` activity to be `POST`ed and the bot identity is supplied either via a custom header of `MS-BotFramework-BotAppId` or via a querystring param of `botAppId`. Once received, that is processed like any other activity via `ProcessActivity` and what the bot does in response to that activity is entirely up to it.\r\n\r\nNow, because an `event` activity has a `value` which is basically an opaque payload, the external system that is `POST`ing can supply whatever details the bot might be expecting via that. For example, that payload might include some conversation references that could then lead to the bot calling `ContinueConversation` and .\r\n\r\n~~This _also_ fixes #314 in that `BotFrameworkAdapter` didn't override the default `BotAdapter::ContinueConversation` and so for a bot that was just calling `context.Adapter.ContinueConversation`, it was blowing up because the services that `BotFrameworkAdapter` expected to be registered were not there... now they are. I could pull this out into a separate PR if we don't like the external events stuff and think this might get held up for too long. It was just something I finally found while debugging my external events endpoint, so I included it in this PR.~~\r\n\r\n**Update:** #314 has now been addressed by a standalone PR (#468) which was merged up to `master` and this PR has now been rebased against that to reflect _ONLY_ the external event endpoint changes.","created_at":"2018-04-18T23:03:19Z","updated_at":"2018-05-15T22:51:40Z","closed_at":null,"merged_at":null,"merge_commit_sha":"45b93cd849371fb5c1db067515bd3a58c2dfa144","assignee":null,"assignees":[],"requested_reviewers":[{"login":"Stevenic","id":698939,"avatar_url":"https://avatars2.githubusercontent.com/u/698939?v=4","gravatar_id":"","url":"https://api.github.com/users/Stevenic","html_url":"https://github.com/Stevenic","followers_url":"https://api.github.com/users/Stevenic/followers","following_url":"https://api.github.com/users/Stevenic/following{/other_user}","gists_url":"https://api.github.com/users/Stevenic/gists{/gist_id}","starred_url":"https://api.github.com/users/Stevenic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Stevenic/subscriptions","organizations_url":"https://api.github.com/users/Stevenic/orgs","repos_url":"https://api.github.com/users/Stevenic/repos","events_url":"https://api.github.com/users/Stevenic/events{/privacy}","received_events_url":"https://api.github.com/users/Stevenic/received_events","type":"User","site_admin":false},{"login":"cleemullins","id":1165321,"avatar_url":"https://avatars1.githubusercontent.com/u/1165321?v=4","gravatar_id":"","url":"https://api.github.com/users/cleemullins","html_url":"https://github.com/cleemullins","followers_url":"https://api.github.com/users/cleemullins/followers","following_url":"https://api.github.com/users/cleemullins/following{/other_user}","gists_url":"https://api.github.com/users/cleemullins/gists{/gist_id}","starred_url":"https://api.github.com/users/cleemullins/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cleemullins/subscriptions","organizations_url":"https://api.github.com/users/cleemullins/orgs","repos_url":"https://api.github.com/users/cleemullins/repos","events_url":"https://api.github.com/users/cleemullins/events{/privacy}","received_events_url":"https://api.github.com/users/cleemullins/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":801047404,"url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/labels/enhancement","name":"enhancement","color":"84b6eb","default":true},{"id":900042229,"url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/labels/proactive","name":"proactive","color":"3733b7","default":false},{"id":852386740,"url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/labels/wip","name":"wip","color":"b60205","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/pulls/461/commits","review_comments_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/pulls/461/comments","review_comment_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/issues/461/comments","statuses_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/statuses/e9d3d3ec22c9a4d33c970db23995e1f6f9325483","head":{"label":"Microsoft:drmarsh/integration-lib-event-endpoint-refactor","ref":"drmarsh/integration-lib-event-endpoint-refactor","sha":"e9d3d3ec22c9a4d33c970db23995e1f6f9325483","user":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars2.githubusercontent.com/u/6154722?v=4","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"repo":{"id":117021670,"name":"botbuilder-dotnet","full_name":"Microsoft/botbuilder-dotnet","owner":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars2.githubusercontent.com/u/6154722?v=4","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Microsoft/botbuilder-dotnet","description":"The Microsoft Bot Framework provides what you need to build and connect intelligent bots that interact naturally wherever your users are talking, from text/sms to Skype, Slack, Office 365 mail and other popular services.","fork":false,"url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet","forks_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/forks","keys_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/teams","hooks_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/hooks","issue_events_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/issues/events{/number}","events_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/events","assignees_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/assignees{/user}","branches_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/branches{/branch}","tags_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/tags","blobs_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/git/refs{/sha}","trees_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/statuses/{sha}","languages_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/languages","stargazers_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/stargazers","contributors_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/contributors","subscribers_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/subscribers","subscription_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/subscription","commits_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/commits{/sha}","git_commits_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/git/commits{/sha}","comments_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/comments{/number}","issue_comment_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/issues/comments{/number}","contents_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/contents/{+path}","compare_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/merges","archive_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/downloads","issues_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/issues{/number}","pulls_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/pulls{/number}","milestones_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/milestones{/number}","notifications_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/labels{/name}","releases_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/releases{/id}","deployments_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/deployments","created_at":"2018-01-10T23:03:16Z","updated_at":"2018-05-15T22:31:28Z","pushed_at":"2018-05-15T22:31:36Z","git_url":"git://github.com/Microsoft/botbuilder-dotnet.git","ssh_url":"git@github.com:Microsoft/botbuilder-dotnet.git","clone_url":"https://github.com/Microsoft/botbuilder-dotnet.git","svn_url":"https://github.com/Microsoft/botbuilder-dotnet","homepage":"http://botframework.com","size":3958,"stargazers_count":118,"watchers_count":118,"language":"C#","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":52,"mirror_url":null,"archived":false,"open_issues_count":62,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit"},"forks":52,"open_issues":62,"watchers":118,"default_branch":"master"}},"base":{"label":"Microsoft:master","ref":"master","sha":"0cf1b5e97b4d3d816d8bf9e2ca9395021f653b21","user":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars2.githubusercontent.com/u/6154722?v=4","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"repo":{"id":117021670,"name":"botbuilder-dotnet","full_name":"Microsoft/botbuilder-dotnet","owner":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars2.githubusercontent.com/u/6154722?v=4","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Microsoft/botbuilder-dotnet","description":"The Microsoft Bot Framework provides what you need to build and connect intelligent bots that interact naturally wherever your users are talking, from text/sms to Skype, Slack, Office 365 mail and other popular services.","fork":false,"url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet","forks_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/forks","keys_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/teams","hooks_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/hooks","issue_events_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/issues/events{/number}","events_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/events","assignees_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/assignees{/user}","branches_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/branches{/branch}","tags_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/tags","blobs_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/git/refs{/sha}","trees_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/statuses/{sha}","languages_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/languages","stargazers_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/stargazers","contributors_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/contributors","subscribers_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/subscribers","subscription_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/subscription","commits_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/commits{/sha}","git_commits_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/git/commits{/sha}","comments_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/comments{/number}","issue_comment_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/issues/comments{/number}","contents_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/contents/{+path}","compare_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/merges","archive_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/downloads","issues_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/issues{/number}","pulls_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/pulls{/number}","milestones_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/milestones{/number}","notifications_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/labels{/name}","releases_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/releases{/id}","deployments_url":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/deployments","created_at":"2018-01-10T23:03:16Z","updated_at":"2018-05-15T22:31:28Z","pushed_at":"2018-05-15T22:31:36Z","git_url":"git://github.com/Microsoft/botbuilder-dotnet.git","ssh_url":"git@github.com:Microsoft/botbuilder-dotnet.git","clone_url":"https://github.com/Microsoft/botbuilder-dotnet.git","svn_url":"https://github.com/Microsoft/botbuilder-dotnet","homepage":"http://botframework.com","size":3958,"stargazers_count":118,"watchers_count":118,"language":"C#","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":52,"mirror_url":null,"archived":false,"open_issues_count":62,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit"},"forks":52,"open_issues":62,"watchers":118,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/pulls/461"},"html":{"href":"https://github.com/Microsoft/botbuilder-dotnet/pull/461"},"issue":{"href":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/issues/461"},"comments":{"href":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/issues/461/comments"},"review_comments":{"href":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/pulls/461/comments"},"review_comment":{"href":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/pulls/461/commits"},"statuses":{"href":"https://api.github.com/repos/Microsoft/botbuilder-dotnet/statuses/e9d3d3ec22c9a4d33c970db23995e1f6f9325483"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"tomlm"}}