Skip to content
This repository has been archived by the owner on Jun 30, 2022. It is now read-only.

Tedlee/update streaming lib #1951

Merged
merged 3 commits into from
Jul 25, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,75 +1,53 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version Condition=" '$(PackageVersion)' == '' ">4.0.0-local</Version>
<Version Condition=" '$(PackageVersion)' != '' ">$(PackageVersion)</Version>
<PackageVersion Condition=" '$(PackageVersion)' == '' ">4.0.0-local</PackageVersion>
<PackageVersion Condition=" '$(PackageVersion)' != '' ">$(PackageVersion)</PackageVersion>
<Configurations>Debug;Release;Documentation;Debug - NuGet Packages;</Configurations>
<LangVersion>7.1</LangVersion>
</PropertyGroup>

<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<AssemblyName>Microsoft.Bot.Builder.Skills</AssemblyName>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
<Company>Microsoft</Company>
<Authors>Microsoft</Authors>
<Description>Shared library for building Bot Framework Skills.</Description>
<RestoreAdditionalProjectSources>
https://botbuilder.myget.org/F/experimental/api/v3/index.json;
</RestoreAdditionalProjectSources>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<SignAssembly>true</SignAssembly>
<DelaySign>true</DelaySign>
<AssemblyOriginatorKeyFile>..\..\build\35MSSharedLib1024.snk</AssemblyOriginatorKeyFile>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
</PropertyGroup>

<ItemGroup>
<Compile Remove="Models\SkillDefinition.cs" />
<Compile Remove="Models\SkillDefinition.cs"/>
</ItemGroup>

<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.2" />
<PackageReference Include="Microsoft.Bot.Builder" Version="4.5.1" />
<PackageReference Include="Microsoft.Bot.Builder.Dialogs" Version="4.5.1" />
<PackageReference Include="Microsoft.Bot.Builder.Integration.AspNet.Core" Version="4.5.1" />
<PackageReference Include="Microsoft.Bot.Protocol" Version="1.0.0-67551" />
<PackageReference Include="Microsoft.Bot.Protocol.WebSockets" Version="1.0.0-67551" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.0-beta008" PrivateAssets="all" />
<PackageReference Include="System.Net.Http" Version="4.3.4" />
<PackageReference Include="SourceLink.Create.CommandLine" Version="2.8.3" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.2"/>
<PackageReference Include="Microsoft.Bot.Builder" Version="4.5.1"/>
<PackageReference Include="Microsoft.Bot.Builder.Dialogs" Version="4.5.1"/>
<PackageReference Include="Microsoft.Bot.Builder.Integration.AspNet.Core" Version="4.5.1"/>
<PackageReference Include="StyleCop.Analyzers" Version="1.1.0-beta008" PrivateAssets="all"/>
<PackageReference Include="System.Net.Http" Version="4.3.4"/>
<PackageReference Include="SourceLink.Create.CommandLine" Version="2.8.3"/>
<PackageReference Include="Microsoft.Bot.StreamingExtensions" Version="4.5.1-preview1"/>
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\microsoft.bot.builder.solutions\microsoft.bot.builder.solutions\Microsoft.Bot.Builder.Solutions.csproj" />
<ProjectReference Include="..\..\microsoft.bot.builder.solutions\microsoft.bot.builder.solutions\Microsoft.Bot.Builder.Solutions.csproj"/>
</ItemGroup>

<ItemGroup>
<Reference Include="Microsoft.Bot.Protocol">
<HintPath>Dependencies\Microsoft.Bot.Protocol.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Bot.Protocol.WebSockets">
<HintPath>Dependencies\Microsoft.Bot.Protocol.WebSockets.dll</HintPath>
</Reference>
</ItemGroup>

<ItemGroup>
<None Update="Responses\SkillResponses.tt">
<Generator>TextTemplatingFileGenerator</Generator>
<LastGenOutput>SkillResponses.cs</LastGenOutput>
</None>
</ItemGroup>

<ItemGroup>
<Compile Update="Responses\SkillResponses.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>SkillResponses.tt</DependentUpon>
</Compile>
</ItemGroup>

</Project>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@

<files>
<file src="bin\$configuration$\netstandard2.0\Microsoft.Bot.Builder.Skills.dll" target="lib\netstandard2.0" />
<file src="bin\$configuration$\netstandard2.0\Microsoft.Bot.Protocol.dll" target="lib\netstandard2.0" />
<file src="bin\$configuration$\netstandard2.0\Microsoft.Bot.Protocol.WebSockets.dll" target="lib\netstandard2.0" />
<file src="bin\$configuration$\netstandard2.0\de\**" target="lib\netstandard2.0\de" />
<file src="bin\$configuration$\netstandard2.0\es\**" target="lib\netstandard2.0\es" />
<file src="bin\$configuration$\netstandard2.0\fr\**" target="lib\netstandard2.0\fr" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using System;
using System.Threading.Tasks;
using Microsoft.Bot.Protocol;
using Microsoft.Bot.StreamingExtensions;

namespace Microsoft.Bot.Builder.Skills.Protocol
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using Microsoft.Bot.Protocol;
using Microsoft.Bot.StreamingExtensions;

namespace Microsoft.Bot.Builder.Skills.Protocol
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
using System.Collections.Generic;
using System.Dynamic;
using System.Linq;
using Microsoft.Bot.Protocol;
using Microsoft.Bot.StreamingExtensions;

namespace Microsoft.Bot.Builder.Skills.Protocol
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
using System;
using System.Net.Http;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Bot.Builder.Skills.Protocol;
using Microsoft.Bot.Builder.Solutions;
using Microsoft.Bot.Protocol;
using Microsoft.Bot.Schema;
using Microsoft.Bot.StreamingExtensions;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;

Expand Down Expand Up @@ -37,7 +38,7 @@ public SkillCallingRequestHandler(ITurnContext turnContext, IBotTelemetryClient
Action =
async (request, routeData) =>
{
var activity = await request.ReadBodyAsJson<Activity>().ConfigureAwait(false);
var activity = request.ReadBodyAsJson<Activity>();
if (activity != null)
{
if (activity.Type == ActivityTypes.Event && activity.Name == TokenEvents.TokenRequestEventName)
Expand Down Expand Up @@ -88,8 +89,8 @@ public SkillCallingRequestHandler(ITurnContext turnContext, IBotTelemetryClient
Action =
async (request, routeData) =>
{
var activity = await request.ReadBodyAsJson<Activity>().ConfigureAwait(false);
var result = _turnContext.UpdateActivityAsync(activity).ConfigureAwait(false);
var activity = request.ReadBodyAsJson<Activity>();
var result = await _turnContext.UpdateActivityAsync(activity).ConfigureAwait(false);
return result;
},
},
Expand All @@ -103,7 +104,7 @@ public SkillCallingRequestHandler(ITurnContext turnContext, IBotTelemetryClient
Action =
async (request, routeData) =>
{
var result = await _turnContext.DeleteActivityAsync(routeData.activityId);
var result = await _turnContext.DeleteActivityAsync(routeData.activityId).ConfigureAwait(false);
return result;
},
},
Expand All @@ -113,25 +114,25 @@ public SkillCallingRequestHandler(ITurnContext turnContext, IBotTelemetryClient
_router = new Router(routes);
}

public override async Task<Response> ProcessRequestAsync(ReceiveRequest request, object context = null, ILogger<RequestHandler> logger = null)
public override async Task<StreamingResponse> ProcessRequestAsync(ReceiveRequest request, ILogger<RequestHandler> logger, object context = null, CancellationToken cancellationToken = default)
{
var routeContext = _router.Route(request);
if (routeContext != null)
{
try
{
var responseBody = await routeContext.Action.Action(request, routeContext.RouteData).ConfigureAwait(false);
return Response.OK(new StringContent(JsonConvert.SerializeObject(responseBody, SerializationSettings.DefaultSerializationSettings), Encoding.UTF8, SerializationSettings.ApplicationJson));
return StreamingResponse.OK(new StringContent(JsonConvert.SerializeObject(responseBody, SerializationSettings.DefaultSerializationSettings), Encoding.UTF8, SerializationSettings.ApplicationJson));
}
catch (Exception ex)
{
_botTelemetryClient.TrackException(ex);
return Response.InternalServerError();
return StreamingResponse.InternalServerError();
}
}
else
{
return Response.NotFound();
return StreamingResponse.NotFound();
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
using Microsoft.AspNetCore.Http;
using Microsoft.Bot.Builder.Integration.AspNet.Core;
using Microsoft.Bot.Builder.Skills.Auth;
using Microsoft.Bot.Protocol.WebSockets;
using Microsoft.Bot.StreamingExtensions.Transport;
using Microsoft.Bot.StreamingExtensions.Transport.WebSockets;

namespace Microsoft.Bot.Builder.Skills
{
Expand Down Expand Up @@ -90,7 +91,7 @@ private async Task CreateWebSocketConnectionAsync(HttpContext httpContext, IBot
Task.WaitAll(startListening);
}

private void Server_Disconnected(object sender, Bot.Protocol.Transport.DisconnectedEventArgs e)
private void Server_Disconnected(object sender, DisconnectedEventArgs e)
{
if (_stopWatch.IsRunning)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Bot.Builder.Solutions;
using Microsoft.Bot.Protocol;
using Microsoft.Bot.Protocol.WebSockets;
using Microsoft.Bot.Schema;
using Microsoft.Bot.StreamingExtensions;
using Microsoft.Bot.StreamingExtensions.Transport.WebSockets;
using Diagnostics = System.Diagnostics;

namespace Microsoft.Bot.Builder.Skills
Expand Down Expand Up @@ -121,7 +121,7 @@ public override async Task<ResourceResponse[]> SendActivitiesAsync(ITurnContext
(activity.Type == ActivityTypes.Trace && activity.ChannelId == "emulator"))
{
var requestPath = $"/activities/{activity.Id}";
var request = Request.CreatePost(requestPath);
var request = StreamingRequest.CreatePost(requestPath);
request.SetBody(activity);

_botTelemetryClient.TrackTrace($"Sending activity. ReplyToId: {activity.ReplyToId}", Severity.Information, null);
Expand Down Expand Up @@ -168,7 +168,7 @@ public override async Task<ResourceResponse[]> SendActivitiesAsync(ITurnContext
public override async Task<ResourceResponse> UpdateActivityAsync(ITurnContext turnContext, Activity activity, CancellationToken cancellationToken)
{
var requestPath = $"/activities/{activity.Id}";
var request = Request.CreatePut(requestPath);
var request = StreamingRequest.CreatePut(requestPath);
request.SetBody(activity);

var response = default(ResourceResponse);
Expand Down Expand Up @@ -199,7 +199,7 @@ public override async Task<ResourceResponse> UpdateActivityAsync(ITurnContext tu
public override async Task DeleteActivityAsync(ITurnContext turnContext, ConversationReference reference, CancellationToken cancellationToken)
{
var requestPath = $"/activities/{reference.ActivityId}";
var request = Request.CreateDelete(requestPath);
var request = StreamingRequest.CreateDelete(requestPath);

_botTelemetryClient.TrackTrace($"Deleting activity. activity id: {reference.ActivityId}", Severity.Information, null);

Expand Down Expand Up @@ -232,7 +232,7 @@ public async Task SendRemoteTokenRequestEventAsync(ITurnContext turnContext, Can
await SendActivitiesAsync(turnContext, new Activity[] { response }, cancellationToken).ConfigureAwait(false);
}

private async Task<T> SendRequestAsync<T>(Request request, CancellationToken cancellation = default(CancellationToken))
private async Task<T> SendRequestAsync<T>(StreamingRequest request, CancellationToken cancellation = default(CancellationToken))
{
try
{
Expand All @@ -253,7 +253,7 @@ public async Task SendRemoteTokenRequestEventAsync(ITurnContext turnContext, Can
return default(T);
}

private async Task SendRequestAsync(Request request, CancellationToken cancellation = default(CancellationToken))
private async Task SendRequestAsync(StreamingRequest request, CancellationToken cancellation = default(CancellationToken))
{
try
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Bot.Builder.Solutions;
using Microsoft.Bot.Protocol;
using Microsoft.Bot.Schema;
using Microsoft.Bot.StreamingExtensions;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using Diagnostics = System.Diagnostics;
Expand All @@ -28,7 +28,7 @@ internal SkillWebSocketRequestHandler(IBotTelemetryClient botTelemetryClient)

public IActivityHandler SkillWebSocketBotAdapter { get; set; }

public async override Task<Response> ProcessRequestAsync(ReceiveRequest request, object context = null, ILogger<RequestHandler> logger = null)
public async override Task<StreamingResponse> ProcessRequestAsync(ReceiveRequest request, ILogger<RequestHandler> logger = null, object context = null, CancellationToken cancellationToken = default(CancellationToken))
{
if (Bot == null)
{
Expand All @@ -40,9 +40,9 @@ public async override Task<Response> ProcessRequestAsync(ReceiveRequest request,
throw new ArgumentNullException(nameof(SkillWebSocketBotAdapter));
}

var response = new Response();
var response = new StreamingResponse();

var body = await request.ReadBodyAsString().ConfigureAwait(false);
var body = request.ReadBodyAsString();

if (string.IsNullOrEmpty(body) || request.Streams?.Count == 0)
{
Expand All @@ -51,7 +51,7 @@ public async override Task<Response> ProcessRequestAsync(ReceiveRequest request,
return response;
}

if (request.Streams.Where(x => x.Type != "application/json; charset=utf-8").Any())
if (request.Streams.Where(x => x.ContentType != "application/json; charset=utf-8").Any())
{
response.StatusCode = (int)HttpStatusCode.NotAcceptable;
return response;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@
using Microsoft.Bot.Builder.Skills.Models;
using Microsoft.Bot.Builder.Skills.Models.Manifest;
using Microsoft.Bot.Connector.Authentication;
using Microsoft.Bot.Protocol;
using Microsoft.Bot.Protocol.Transport;
using Microsoft.Bot.Protocol.WebSockets;
using Microsoft.Bot.Schema;
using Microsoft.Bot.StreamingExtensions;
using Microsoft.Bot.StreamingExtensions.Transport;
using Microsoft.Bot.StreamingExtensions.Transport.WebSockets;
using Newtonsoft.Json;

namespace Microsoft.Bot.Builder.Skills
Expand Down Expand Up @@ -66,7 +66,7 @@ public async Task<bool> ForwardToSkillAsync(ITurnContext turnContext, Activity a

// Serialize the activity and POST to the Skill endpoint
var body = new StringContent(JsonConvert.SerializeObject(activity, SerializationSettings.BotSchemaSerializationSettings), Encoding.UTF8, SerializationSettings.ApplicationJson);
var request = Request.CreatePost(string.Empty, body);
var request = StreamingRequest.CreatePost(string.Empty, body);

// set back recipient id to make things consistent
activity.Recipient.Id = recipientId;
Expand Down