{"action":"opened","number":2850,"pull_request":{"url":"https://api.github.com/repos/mautic/mautic/pulls/2850","id":91339103,"html_url":"https://github.com/mautic/mautic/pull/2850","diff_url":"https://github.com/mautic/mautic/pull/2850.diff","patch_url":"https://github.com/mautic/mautic/pull/2850.patch","issue_url":"https://api.github.com/repos/mautic/mautic/issues/2850","number":2850,"state":"open","locked":false,"title":"Citrix Plugin (GoToWebinar, GoToMeeting, GoToTraining and GoToAssist)","user":{"login":"virlatinus","id":2924026,"avatar_url":"https://avatars.githubusercontent.com/u/2924026?v=3","gravatar_id":"","url":"https://api.github.com/users/virlatinus","html_url":"https://github.com/virlatinus","followers_url":"https://api.github.com/users/virlatinus/followers","following_url":"https://api.github.com/users/virlatinus/following{/other_user}","gists_url":"https://api.github.com/users/virlatinus/gists{/gist_id}","starred_url":"https://api.github.com/users/virlatinus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/virlatinus/subscriptions","organizations_url":"https://api.github.com/users/virlatinus/orgs","repos_url":"https://api.github.com/users/virlatinus/repos","events_url":"https://api.github.com/users/virlatinus/events{/privacy}","received_events_url":"https://api.github.com/users/virlatinus/received_events","type":"User","site_admin":false},"body":"| Q  | A\r\n| --- | ---\r\n| Bug fix? | No\r\n| New feature? | Yes\r\n| Related user documentation PR URL | N/A\r\n| Related developer documentation PR URL | N/A\r\n| Issues addressed (#s or URLs) | https://github.com/mautic/mautic/issues/2156\r\n| BC breaks? | N/A\r\n| Deprecations? | N/A\r\n\r\n#### Description:\r\nCreate a plugin that pulls data from Mautic and pushes data to Mautic from GotoMeeeting, GotoWebinar, GotoTraining and GoToAssist) .\r\n### Required Features:\r\n1. Create registrants in GoToMeeting and GoToTraining based on campaign decisions, contact data and also from registration forms in Mautic \r\n2. Pull back from registrant and attendee info into segments and campaigns  \r\n3. Display webinar and training attendance as an additional activity on the contact timeline\r\n4. Send emails with buttons to start GoToMeeting, GoToTraining and GoToAssist sessions\r\n\r\n#### Steps to test this PR:\r\n1. Apply this PR\r\n2. Enable the desired products on the plugins page\r\n3. It's necessary to have a developer account from the [Citrix Developer Website](https://developer.citrixonline.com) and have an API key for every product.\r\n4. Authorize the products from their respective plugin pages\r\n5. There will be several places where it will be possible to integrate the products.\r\n6. For more examples, see the following manual\r\n\r\n## CITRIX PLUGIN MANUAL\r\n \r\n1. Enable the plugins you need\r\n![image](https://cloud.githubusercontent.com/assets/2924026/19797584/54467954-9ca9-11e6-8e31-f80f7469fe84.png)\r\n\r\n2. Activate the plugins with the Citrix Developer API keys\r\n![image](https://cloud.githubusercontent.com/assets/2924026/19797588/5c6ce640-9ca9-11e6-981c-a98a728e1712.png)\r\n\r\n3. Use the Consumer Keys from the developer website\r\n![image](https://cloud.githubusercontent.com/assets/2924026/19797595/612744f0-9ca9-11e6-90b0-566fdff69ef4.png)\r\n\r\n4. New segment filters will be available\r\n![image](https://cloud.githubusercontent.com/assets/2924026/19797599/655fb6ce-9ca9-11e6-9d27-9ec295068a1a.png)\r\n\r\n5. Past sessions will be available to choose from\r\n![image](https://cloud.githubusercontent.com/assets/2924026/19797600/69dd3604-9ca9-11e6-8212-7a0a383bff34.png)\r\n\r\n6. New fields will be availabe for forms\r\n![image](https://cloud.githubusercontent.com/assets/2924026/19798154/9954bf30-9cac-11e6-8173-06acc0ca1fa1.png)\r\n\r\n7. The fields will display the available events for each product (the form will validate that the mandatory fields are present)\r\n![image](https://cloud.githubusercontent.com/assets/2924026/19797605/72ec51e4-9ca9-11e6-8416-be31a013c8d1.png)\r\n\r\n8. Form actions will also be available\r\n![image](https://cloud.githubusercontent.com/assets/2924026/19797611/7699f9c2-9ca9-11e6-96f5-d90dcafcbd3f.png)\r\n\r\n9. Each action will permit to select a single event or let the user select from the form. They also include fields to map to obligatory lead fields\r\n![image](https://cloud.githubusercontent.com/assets/2924026/19797613/7b25eb68-9ca9-11e6-99c7-d9f4053136ac.png)\r\n\r\n10. This is an example of a form that lets the user select the event from a list\r\n![image](https://cloud.githubusercontent.com/assets/2924026/19797614/7eea2f02-9ca9-11e6-86dd-c895bb0d65c3.png)\r\n\r\n11. The Send Link actions require an email object with a Token to insert the link of the event (the available tokens are shown)\r\n![image](https://cloud.githubusercontent.com/assets/2924026/19797615/82b326f2-9ca9-11e6-9d30-1324b7efd49a.png)\r\n\r\n12. There are also conditions for campaigns (registered and attended)\r\n![image](https://cloud.githubusercontent.com/assets/2924026/19797618/8693fb8e-9ca9-11e6-8ae2-44b67f05769e.png)\r\n\r\n13. The campaign actions allow to select the event and the email template to send (if applicable)\r\n![image](https://cloud.githubusercontent.com/assets/2924026/19797619/8a501b68-9ca9-11e6-8232-d5c23b9cf445.png)\r\n\r\n14. This is an example of a campaign that sends a link to a preliminary meeting after a contact is identified as to have registered to a webinar (using segment)\r\n![image](https://cloud.githubusercontent.com/assets/2924026/19797623/8d7b1252-9ca9-11e6-9370-b3f05cc08ee1.png)\r\n\r\n15. In this example, the form has been submitted\r\n![image](https://cloud.githubusercontent.com/assets/2924026/19797632/9122e614-9ca9-11e6-991c-70b2033ea6c9.png)\r\n\r\n16. The new events appear in the contact's timeline\r\n![image](https://cloud.githubusercontent.com/assets/2924026/19797638/9484bb7a-9ca9-11e6-9a18-62eab010378e.png)\r\n\r\n17. The email with the link (that was injected with the Token) is viewed in the browser\r\n![image](https://cloud.githubusercontent.com/assets/2924026/19797642/986c9c30-9ca9-11e6-9233-5e826f2520b9.png)\r\n\r\n18. When the contact clicks on the link, it redirects to GoToMeeting to start the meeting\r\n![image](https://cloud.githubusercontent.com/assets/2924026/19797644/9c6e43ce-9ca9-11e6-8f45-ec36b19502fa.png)\r\n\r\n19. This is an example of a webinar where the contact attended\r\n![image](https://cloud.githubusercontent.com/assets/2924026/19797647/a012bfb4-9ca9-11e6-8d27-92edfb071bfb.png)\r\n\r\n20. When the crontab job that synchronizes the data runs, it retrieves the new state of the contact and it's visible on the timeline as an attended event\r\n![image](https://cloud.githubusercontent.com/assets/2924026/19797652/a435ee36-9ca9-11e6-9936-17cd19384452.png)\r\n\r\n#### The previous examples used GoToMeeting and GoToWebinar, but it's the same for GoToTraining and GoToAssist\r\n","created_at":"2016-10-28T08:11:36Z","updated_at":"2016-10-28T08:11:36Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/mautic/mautic/pulls/2850/commits","review_comments_url":"https://api.github.com/repos/mautic/mautic/pulls/2850/comments","review_comment_url":"https://api.github.com/repos/mautic/mautic/pulls/comments{/number}","comments_url":"https://api.github.com/repos/mautic/mautic/issues/2850/comments","statuses_url":"https://api.github.com/repos/mautic/mautic/statuses/53f7094eacb0f6d3857d55996f3f13f016313a2b","head":{"label":"virlatinus:CitrixPlugin","ref":"CitrixPlugin","sha":"53f7094eacb0f6d3857d55996f3f13f016313a2b","user":{"login":"virlatinus","id":2924026,"avatar_url":"https://avatars.githubusercontent.com/u/2924026?v=3","gravatar_id":"","url":"https://api.github.com/users/virlatinus","html_url":"https://github.com/virlatinus","followers_url":"https://api.github.com/users/virlatinus/followers","following_url":"https://api.github.com/users/virlatinus/following{/other_user}","gists_url":"https://api.github.com/users/virlatinus/gists{/gist_id}","starred_url":"https://api.github.com/users/virlatinus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/virlatinus/subscriptions","organizations_url":"https://api.github.com/users/virlatinus/orgs","repos_url":"https://api.github.com/users/virlatinus/repos","events_url":"https://api.github.com/users/virlatinus/events{/privacy}","received_events_url":"https://api.github.com/users/virlatinus/received_events","type":"User","site_admin":false},"repo":{"id":64877143,"name":"Mautic-Fork","full_name":"virlatinus/Mautic-Fork","owner":{"login":"virlatinus","id":2924026,"avatar_url":"https://avatars.githubusercontent.com/u/2924026?v=3","gravatar_id":"","url":"https://api.github.com/users/virlatinus","html_url":"https://github.com/virlatinus","followers_url":"https://api.github.com/users/virlatinus/followers","following_url":"https://api.github.com/users/virlatinus/following{/other_user}","gists_url":"https://api.github.com/users/virlatinus/gists{/gist_id}","starred_url":"https://api.github.com/users/virlatinus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/virlatinus/subscriptions","organizations_url":"https://api.github.com/users/virlatinus/orgs","repos_url":"https://api.github.com/users/virlatinus/repos","events_url":"https://api.github.com/users/virlatinus/events{/privacy}","received_events_url":"https://api.github.com/users/virlatinus/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/virlatinus/Mautic-Fork","description":"Mautic: Open Source Marketing Automation Software.","fork":true,"url":"https://api.github.com/repos/virlatinus/Mautic-Fork","forks_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/forks","keys_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/keys{/key_id}","collaborators_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/teams","hooks_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/hooks","issue_events_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/issues/events{/number}","events_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/events","assignees_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/assignees{/user}","branches_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/branches{/branch}","tags_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/tags","blobs_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/git/refs{/sha}","trees_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/git/trees{/sha}","statuses_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/statuses/{sha}","languages_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/languages","stargazers_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/stargazers","contributors_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/contributors","subscribers_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/subscribers","subscription_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/subscription","commits_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/commits{/sha}","git_commits_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/git/commits{/sha}","comments_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/comments{/number}","issue_comment_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/issues/comments{/number}","contents_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/contents/{+path}","compare_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/compare/{base}...{head}","merges_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/merges","archive_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/downloads","issues_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/issues{/number}","pulls_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/pulls{/number}","milestones_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/milestones{/number}","notifications_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/labels{/name}","releases_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/releases{/id}","deployments_url":"https://api.github.com/repos/virlatinus/Mautic-Fork/deployments","created_at":"2016-08-03T20:29:30Z","updated_at":"2016-08-24T18:49:55Z","pushed_at":"2016-10-28T00:50:17Z","git_url":"git://github.com/virlatinus/Mautic-Fork.git","ssh_url":"git@github.com:virlatinus/Mautic-Fork.git","clone_url":"https://github.com/virlatinus/Mautic-Fork.git","svn_url":"https://github.com/virlatinus/Mautic-Fork","homepage":"https://www.mautic.org","size":61255,"stargazers_count":0,"watchers_count":0,"language":"PHP","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"staging"}},"base":{"label":"mautic:staging","ref":"staging","sha":"afb4da4491ac2f12e8500d504906bd20f8ff47ee","user":{"login":"mautic","id":5257677,"avatar_url":"https://avatars.githubusercontent.com/u/5257677?v=3","gravatar_id":"","url":"https://api.github.com/users/mautic","html_url":"https://github.com/mautic","followers_url":"https://api.github.com/users/mautic/followers","following_url":"https://api.github.com/users/mautic/following{/other_user}","gists_url":"https://api.github.com/users/mautic/gists{/gist_id}","starred_url":"https://api.github.com/users/mautic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mautic/subscriptions","organizations_url":"https://api.github.com/users/mautic/orgs","repos_url":"https://api.github.com/users/mautic/repos","events_url":"https://api.github.com/users/mautic/events{/privacy}","received_events_url":"https://api.github.com/users/mautic/received_events","type":"Organization","site_admin":false},"repo":{"id":12204147,"name":"mautic","full_name":"mautic/mautic","owner":{"login":"mautic","id":5257677,"avatar_url":"https://avatars.githubusercontent.com/u/5257677?v=3","gravatar_id":"","url":"https://api.github.com/users/mautic","html_url":"https://github.com/mautic","followers_url":"https://api.github.com/users/mautic/followers","following_url":"https://api.github.com/users/mautic/following{/other_user}","gists_url":"https://api.github.com/users/mautic/gists{/gist_id}","starred_url":"https://api.github.com/users/mautic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mautic/subscriptions","organizations_url":"https://api.github.com/users/mautic/orgs","repos_url":"https://api.github.com/users/mautic/repos","events_url":"https://api.github.com/users/mautic/events{/privacy}","received_events_url":"https://api.github.com/users/mautic/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mautic/mautic","description":"Mautic: Open Source Marketing Automation Software.","fork":false,"url":"https://api.github.com/repos/mautic/mautic","forks_url":"https://api.github.com/repos/mautic/mautic/forks","keys_url":"https://api.github.com/repos/mautic/mautic/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mautic/mautic/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mautic/mautic/teams","hooks_url":"https://api.github.com/repos/mautic/mautic/hooks","issue_events_url":"https://api.github.com/repos/mautic/mautic/issues/events{/number}","events_url":"https://api.github.com/repos/mautic/mautic/events","assignees_url":"https://api.github.com/repos/mautic/mautic/assignees{/user}","branches_url":"https://api.github.com/repos/mautic/mautic/branches{/branch}","tags_url":"https://api.github.com/repos/mautic/mautic/tags","blobs_url":"https://api.github.com/repos/mautic/mautic/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mautic/mautic/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mautic/mautic/git/refs{/sha}","trees_url":"https://api.github.com/repos/mautic/mautic/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mautic/mautic/statuses/{sha}","languages_url":"https://api.github.com/repos/mautic/mautic/languages","stargazers_url":"https://api.github.com/repos/mautic/mautic/stargazers","contributors_url":"https://api.github.com/repos/mautic/mautic/contributors","subscribers_url":"https://api.github.com/repos/mautic/mautic/subscribers","subscription_url":"https://api.github.com/repos/mautic/mautic/subscription","commits_url":"https://api.github.com/repos/mautic/mautic/commits{/sha}","git_commits_url":"https://api.github.com/repos/mautic/mautic/git/commits{/sha}","comments_url":"https://api.github.com/repos/mautic/mautic/comments{/number}","issue_comment_url":"https://api.github.com/repos/mautic/mautic/issues/comments{/number}","contents_url":"https://api.github.com/repos/mautic/mautic/contents/{+path}","compare_url":"https://api.github.com/repos/mautic/mautic/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mautic/mautic/merges","archive_url":"https://api.github.com/repos/mautic/mautic/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mautic/mautic/downloads","issues_url":"https://api.github.com/repos/mautic/mautic/issues{/number}","pulls_url":"https://api.github.com/repos/mautic/mautic/pulls{/number}","milestones_url":"https://api.github.com/repos/mautic/mautic/milestones{/number}","notifications_url":"https://api.github.com/repos/mautic/mautic/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mautic/mautic/labels{/name}","releases_url":"https://api.github.com/repos/mautic/mautic/releases{/id}","deployments_url":"https://api.github.com/repos/mautic/mautic/deployments","created_at":"2013-08-19T00:36:28Z","updated_at":"2016-10-28T03:14:26Z","pushed_at":"2016-10-28T08:11:36Z","git_url":"git://github.com/mautic/mautic.git","ssh_url":"git@github.com:mautic/mautic.git","clone_url":"https://github.com/mautic/mautic.git","svn_url":"https://github.com/mautic/mautic","homepage":"https://www.mautic.org","size":68566,"stargazers_count":1106,"watchers_count":1106,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":390,"mirror_url":null,"open_issues_count":517,"forks":390,"open_issues":517,"watchers":1106,"default_branch":"staging"}},"_links":{"self":{"href":"https://api.github.com/repos/mautic/mautic/pulls/2850"},"html":{"href":"https://github.com/mautic/mautic/pull/2850"},"issue":{"href":"https://api.github.com/repos/mautic/mautic/issues/2850"},"comments":{"href":"https://api.github.com/repos/mautic/mautic/issues/2850/comments"},"review_comments":{"href":"https://api.github.com/repos/mautic/mautic/pulls/2850/comments"},"review_comment":{"href":"https://api.github.com/repos/mautic/mautic/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/mautic/mautic/pulls/2850/commits"},"statuses":{"href":"https://api.github.com/repos/mautic/mautic/statuses/53f7094eacb0f6d3857d55996f3f13f016313a2b"}},"merged":false,"mergeable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"commits":13,"additions":5303,"deletions":14,"changed_files":59}}
{"actor":{"display_login":"virlatinus"}}