Introducing Tunnel Relay

Published Jan 29 2018 12:23 PM 8,422 Views
Microsoft

As you get your hands into developing Messaging Extensions and Bots for Microsoft Teams (read announcement here), you will find yourself wishing for an easy way to have your Bot Framework bot registration point to a static callback URL that routes to code running on your local dev machine.  

 

Well, we have a solution for you and it is called Tunnel Relay. Tunnel Relay allows you to expose local services to the outside work over HTTPS using Azure Service Bus Relay. BotDevelopementTR.png

 

To use it, just download the setup from here and sign-in, copy the incoming requests URL (shown below), and paste into Bot Framework portal's page for your bot’s registration. And that's it, you are good to go!

 

So, copy the URL circled below:MainWindow.png
And paste it into Bot Framework portal, after appending /api/messages (or whatever the relative URL to your controller is):

CallBackURL.jpg

 

 

Tunnel Relay is open-source and is my side-project in Microsoft Teams team (oh btw, we are hiring!). Your code contributions are welcome, and so are bug reports (report here). 

 

Download Tunnel Relay 

 

 

11 Comments
%3CLINGO-SUB%20id%3D%22lingo-sub-218487%22%20slang%3D%22en-US%22%3ERe%3A%20Introducing%20Tunnel%20Relay%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-218487%22%20slang%3D%22en-US%22%3E%3CP%3EThanks!%26nbsp%3B%20I'll%20give%20it%20a%20shot%2C%20hopefully%20starting%20later%20today%20or%20tomorrow.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-218244%22%20slang%3D%22en-US%22%3ERe%3A%20Introducing%20Tunnel%20Relay%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-218244%22%20slang%3D%22en-US%22%3E%3CP%3ETunnelRelay%20does%20not%20allow%20importing%20of%20settings%20directly.%20That%20being%20said%20though%20the%20change%20should%20be%20relatively%20simple%20and%20you%20should%20be%20able%20to%20do%20it.%20I%20am%20out%20of%20city%20for%20some%20time%20and%20thus%20can't%20take%20this%20right%20now.%20I%20however%20have%20replied%20on%20the%20GitHub%20question%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2FOfficeDev%2Fmicrosoft-teams-tunnelrelay%2Fissues%2F13%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3Ehttps%3A%2F%2Fgithub.com%2FOfficeDev%2Fmicrosoft-teams-tunnelrelay%2Fissues%2F13%3C%2FA%3E%20as%20to%20how%20to%20build%20it.%20Should%20not%20take%20too%20long.%20If%20you%20are%20not%20able%20to%20pick%20this%20up%20then%20I%20can%20take%20care%20of%20it%20once%20I%20am%20back.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-218169%22%20slang%3D%22en-US%22%3ERe%3A%20Introducing%20Tunnel%20Relay%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-218169%22%20slang%3D%22en-US%22%3E%3CP%3EHi!%26nbsp%3B%20I'm%20hoping%20to%20use%20this%20at%20least%20as%20a%20short%20term%20workaround%20as%20a%20way%20to%20sideload%20a%20bot%20into%20teams%20for%20which%20we%20can't%20have%20a%20public%20url.%26nbsp%3B%20Question%3A%20is%20there%20a%20way%20to%20start%20TunnelRelay%20automatically%20with%20exported%20settings%3F%26nbsp%3B%20So%20that%20I%20could%20deploy%20it%20as%20part%20of%20a%20service%2C%20and%20it%20would%20automatically%20start%20and%20be%20listening%2Fredirecting%3F%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-198846%22%20slang%3D%22en-US%22%3ERe%3A%20Introducing%20Tunnel%20Relay%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-198846%22%20slang%3D%22en-US%22%3E%3CP%3EGreat%20solution%20Ramjot%2C%3C%2FP%3E%0A%3CP%3EFor%20now%20I'm%20still%20using%20Ngrok%20but%20I'll%20definitely%20give%20it%20a%20try.%3C%2FP%3E%0A%3CP%3EBTW%2C%20more%20than%20a%20CLI%20interface%2C%20Ngrok%20has%20a%20NPM%20package%20for%20node%20solutions%20that%20enables%20me%20to%20configure%20and%20launch%20Ngrok%20right%20from%20my%20Node%20app%2C%20which%20is%20very%20convenient%2C%20because%20I%20can%20configure%20it%20dynamically%20depending%20on%20the%20context%2C%20environment...%3C%2FP%3E%0A%3CP%3ERegards%2C%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-198830%22%20slang%3D%22en-US%22%3ERe%3A%20Introducing%20Tunnel%20Relay%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-198830%22%20slang%3D%22en-US%22%3E%3CP%3EI%20think%20for%20Mac%20a%20valid%20option%20is%20ngrok%20at%20the%20moment%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-198688%22%20slang%3D%22en-US%22%3ERe%3A%20Introducing%20Tunnel%20Relay%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-198688%22%20slang%3D%22en-US%22%3E%3CP%3EYeah%20the%20HTTP%20support%20for%20HybridConnections%20was%20recently%20announced%20and%20that%20overcomes%20the%20limitation%20of%20Azure%20Relay%20which%20was%20using%20WCF%20behind%20the%20scenes.%20Although%20this%20means%20that%20I%20have%20to%20rewrite%20a%20significant%20amount%20of%20the%20code%20to%20remove%20the%20dependency%20on%20both%20WCF%20and%20WPF.%20I%20am%20working%20on%20some%20ways%20to%20do%20that%2C%20so%20that%20existing%20users%20can%20upgrade%20without%20any%20changes%20to%20configuration%20and%20at%20the%20same%20time%20make%20it%20so%2C%20that%20the%20newer%20bits%20works%20on%20all%20OSes.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-198668%22%20slang%3D%22en-US%22%3ERe%3A%20Introducing%20Tunnel%20Relay%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-198668%22%20slang%3D%22en-US%22%3E%3CP%3EJust%20did%20a%20quick%20digging%20-%20there%20are%20some%20samples%20with%20the%20Hybrid%20Connections%20built%20on%20.NET%20Core%202.0%20acting%20as%20a%20reverse%20proxy%20-%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2FAzure%2Fazure-relay%2Ftree%2Ffd942a434b0a6ec497de552aa054c53e753fa85c%2Fsamples%2Fhybrid-connections%2Fdotnet%2Fhcreverseproxy%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3Ehttps%3A%2F%2Fgithub.com%2FAzure%2Fazure-relay%2Ftree%2Ffd942a434b0a6ec497de552aa054c53e753fa85c%2Fsamples%2Fhybrid-connections%2Fdotnet%2Fhcreverseproxy%3C%2FA%3E%20-%20just%20tried%20it%20out%20and%20works%20pretty%20nice.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-198644%22%20slang%3D%22en-US%22%3ERe%3A%20Introducing%20Tunnel%20Relay%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-198644%22%20slang%3D%22en-US%22%3E%3CP%3EI%20am%20currently%20investigating%20approaches%20that%20will%20allow%20port%20to%20non-Windows%20platforms.%20No%20timeline%20yet%2C%20but%20hopefully%20I%20will%20have%20something%20for%20you%20%3A).%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-198625%22%20slang%3D%22en-US%22%3ERe%3A%20Introducing%20Tunnel%20Relay%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-198625%22%20slang%3D%22en-US%22%3E%3CP%3EI%20gotta%20say%20this%20is%20pretty%20awesome!%20I%20second%20the%20support%20for%20Mac%20version%20as%20well%20-%20maybe%20a%20CLI-like%20interface%20that%20Ngrok%20or%20others%20have%20without%20the%20UI%20built%20on%20top%20of%20.NET%20Core%3F%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-152074%22%20slang%3D%22en-US%22%3ERe%3A%20Introducing%20Tunnel%20Relay%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-152074%22%20slang%3D%22en-US%22%3E%3CP%3ETunnel%20Relay%20is%20built%20on%20top%20of%20Azure%20Relay%20which%20require%20WCF%20to%20run.%20Since%20WCF%20is%20a%20Windows%20only%20offering%20Mac%20and%20Linux%20are%20not%20supported%20yet.%20We%20are%20working%20with%20Azure%20Relay%20team%20to%20see%20potential%20way%20of%20supporting%20Tunnel%20Relay%20on%20non-Windows%20OSes.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-150803%22%20slang%3D%22en-US%22%3ERe%3A%20Introducing%20Tunnel%20Relay%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-150803%22%20slang%3D%22en-US%22%3E%3CP%3EWill%20there%20be%20a%20Mac%20Version%20as%20well%3F%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-149990%22%20slang%3D%22en-US%22%3EIntroducing%20Tunnel%20Relay%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-149990%22%20slang%3D%22en-US%22%3E%3CP%3EAs%20you%20get%20your%20hands%20into%20developing%20Messaging%20Extensions%20and%20Bots%20for%20Microsoft%20Teams%20(read%20announcement%20%3CA%20href%3D%22https%3A%2F%2Fblogs.office.com%2Fen-us%2F2018%2F01%2F29%2Fnew-ways-to-use-apps-and-get-more-done-in-microsoft-teams%2F%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3Ehere%3C%2FA%3E)%2C%20you%20will%20find%20yourself%20wishing%20for%20an%20easy%20way%20to%20have%20your%20Bot%20Framework%20bot%20registration%20point%20to%20a%20static%20callback%20URL%20that%20routes%20to%20code%20running%20on%20your%20local%20dev%20machine.%26nbsp%3B%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EWell%2C%20we%20have%20a%20solution%20for%20you%20and%20it%20is%20called%20%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2FOfficeDev%2Fmicrosoft-teams-tunnelrelay%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3ETunnel%20Relay%3C%2FA%3E.%20Tunnel%20Relay%20allows%20you%20to%20expose%20local%20services%20to%20the%20outside%20work%20over%20HTTPS%20using%20Azure%20Service%20Bus%20Relay.%3CSPAN%20data-ccp-props%3D%22%7B%26quot%3B201341983%26quot%3B%3A0%2C%26quot%3B335559739%26quot%3B%3A160%2C%26quot%3B335559740%26quot%3B%3A259%7D%22%3E%26nbsp%3B%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-center%22%20image-alt%3D%22BotDevelopementTR.png%22%20style%3D%22width%3A%20877px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F27617iFB53E8F7E2C390FC%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22BotDevelopementTR.png%22%20alt%3D%22BotDevelopementTR.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%3ETo%20use%20it%2C%20just%20download%20the%20setup%20from%20%3C%2FSPAN%3E%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2FOfficeDev%2Fmicrosoft-teams-tunnelrelay%2Freleases%2Flatest%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3E%3CSPAN%3Ehere%3C%2FSPAN%3E%3C%2FA%3E%3CSPAN%3E%20and%20sign-in%2C%20copy%20the%20incoming%20requests%20URL%20(shown%20below)%2C%20and%20paste%20into%20Bot%20Framework%20portal's%20page%20for%20your%20bot%E2%80%99s%20registration.%20And%20that's%20it%2C%20you%20are%20good%20to%20go!%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20data-ccp-props%3D%22%7B%26quot%3B201341983%26quot%3B%3A0%2C%26quot%3B335559739%26quot%3B%3A160%2C%26quot%3B335559740%26quot%3B%3A259%7D%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20data-ccp-props%3D%22%7B%26quot%3B201341983%26quot%3B%3A0%2C%26quot%3B335559739%26quot%3B%3A160%2C%26quot%3B335559740%26quot%3B%3A259%7D%22%3E%3CEM%3ESo%2C%20copy%20the%20URL%20circled%20below%3A%3C%2FEM%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-center%22%20image-alt%3D%22MainWindow.png%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F27618iC7EC088C98EE334A%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22MainWindow.png%22%20alt%3D%22MainWindow.png%22%20%2F%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CEM%3EAnd%20paste%20it%20into%20Bot%20Framework%20portal%2C%20after%20appending%20%2Fapi%2Fmessages%20(or%20whatever%20the%20relative%20URL%20to%20your%20controller%20is)%3A%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-center%22%20image-alt%3D%22CallBackURL.jpg%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F27631i95FBC874B26966C1%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22CallBackURL.jpg%22%20alt%3D%22CallBackURL.jpg%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%3ETunnel%20Relay%20is%20open-source%20and%26nbsp%3Bis%20my%20side-project%26nbsp%3Bin%20Microsoft%20Teams%20team%20(oh%20btw%2C%20%3CA%20title%3D%22Microsoft%20Teams%20jobs%22%20href%3D%22https%3A%2F%2Fcareers.microsoft.com%2Fsearch.aspx%23%26amp%3B%26amp%3Bp2%3Dall%26amp%3Bp1%3Dall%26amp%3Bp3%3Dall%26amp%3Bp4%3Dall%26amp%3Bp0%3D%2522microsoft%2Bteams%2522%26amp%3Bp5%3Dall%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3Ewe%20are%20hiring%3C%2FA%3E!).%20Your%20code%20contributions%20are%20welcome%2C%20and%20so%20are%20bug%20reports%20(report%20%3C%2FSPAN%3E%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2FOfficeDev%2Fmicrosoft-teams-tunnelrelay%2Fissues%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3E%3CSPAN%3Ehere%3C%2FSPAN%3E%3C%2FA%3E%3CSPAN%3E).%3C%2FSPAN%3E%3CSPAN%20data-ccp-props%3D%22%7B%26quot%3B201341983%26quot%3B%3A0%2C%26quot%3B335559739%26quot%3B%3A160%2C%26quot%3B335559740%26quot%3B%3A259%7D%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%20style%3D%22font-weight%3A%20400%3B%22%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%20style%3D%22font-weight%3A%20400%3B%22%3E%3CSTRONG%3E%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2FOfficeDev%2Fmicrosoft-teams-tunnelrelay%2Freleases%2Flatest%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3EDownload%20Tunnel%20Relay%3C%2FA%3E%26nbsp%3B%3C%2FSTRONG%3E%3C%2FP%3E%0A%3CP%20style%3D%22font-weight%3A%20400%3B%22%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%20style%3D%22font-weight%3A%20400%3B%22%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-TEASER%20id%3D%22lingo-teaser-149990%22%20slang%3D%22en-US%22%3E%3CP%3E%3CSPAN%3ETunnel%20Relay%20is%20an%20open-source%20tool%20that%20allows%20you%20to%20expose%20local%20services%20to%20the%20outside%20work%20over%20HTTPS%20using%20Azure%20Service%20Bus%20Relay%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-TEASER%3E%3CLINGO-LABS%20id%3D%22lingo-labs-149990%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3EDeveloper%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3EMicrosoft%20Teams%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E
Version history
Last update:
‎Jan 26 2021 02:16 PM
Updated by:
We support Ukraine and condemn war. Push Russian government to act against war. Be brave, vocal and show your support to Ukraine. Follow the latest news HERE