Skip to content
This repository has been archived by the owner on Jan 15, 2025. It is now read-only.

Adding Telephony preview package, this includes Call Transfer Activit… #942

Merged
merged 7 commits into from
Apr 23, 2021
Merged
Show file tree
Hide file tree
Changes from 4 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
@@ -0,0 +1,66 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

namespace Microsoft.Bot.Components.Telephony.Actions
{
using System.Runtime.CompilerServices;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Usings should go outside of the namespace

using System.Threading;
using System.Threading.Tasks;
using AdaptiveExpressions.Properties;
using Microsoft.Bot.Builder;
using Microsoft.Bot.Builder.Dialogs;
using Newtonsoft.Json;

/// <summary>
/// Transfers call to given phone number.
/// </summary>
public class CallTransfer : Dialog
{
/// <summary>
/// Class identifier.
/// </summary>
[JsonProperty("$kind")]
public const string Kind = "Microsoft.Telephony.CallTransfer";

/// <summary>
/// Initializes a new instance of the <see cref="CallTransfer"/> class.
/// </summary>
/// <param name="sourceFilePath">Optional, source file full path.</param>
/// <param name="sourceLineNumber">Optional, line number in source file.</param>
[JsonConstructor]
public CallTransfer([CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0)
: base()
{
// enable instances of this command as debug break point
this.RegisterSourceLocation(sourceFilePath, sourceLineNumber);
}

/// <summary>
/// Gets or sets the phone number to be included when sending the handoff activity.
/// </summary>
/// <value>
/// <see cref="StringExpression"/>.
/// </value>
[JsonProperty("phoneNumber")]
public StringExpression PhoneNumber { get; set; }

/// <summary>
/// Called when the dialog is started and pushed onto the dialog stack.
/// </summary>
/// <param name="dc">The <see cref="DialogContext"/> for the current turn of conversation.</param>
/// <param name="options">Optional, initial information to pass to the dialog.</param>
/// <param name="cancellationToken">A cancellation token that can be used by other objects
/// or threads to receive notice of cancellation.</param>
/// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns>
public async override Task<DialogTurnResult> BeginDialogAsync(DialogContext dc, object options = null, CancellationToken cancellationToken = default(CancellationToken))
{
var phoneNumber = this.PhoneNumber?.GetValue(dc.State);

// Create handoff event, passing the phone number to transfer to as context.
var context = new { TargetPhoneNumber = phoneNumber };
var handoffEvent = EventFactory.CreateHandoffInitiation(dc.Context, context);
await dc.Context.SendActivityAsync(handoffEvent, cancellationToken).ConfigureAwait(false);
return await dc.EndDialogAsync(result: null, cancellationToken: cancellationToken).ConfigureAwait(false);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Library</OutputType>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>

<PropertyGroup>
<PackageId>Microsoft.Bot.Components.Telephony</PackageId>
<VersionPrefix>1.0.0-preview</VersionPrefix>
<Description>This library implements .NET support for adaptive dialogs with Telephony.</Description>
<Summary>This library implements .NET support for adaptive dialogs with Telephony.</Summary>
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>..\..\build\35MSSharedLib1024.snk</AssemblyOriginatorKeyFile>
<DelaySign>true</DelaySign>
<ContentTargetFolders>content</ContentTargetFolders>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Bot.Builder.Dialogs.Adaptive.Runtime" Version="4.13.0" />

<PackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.333">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
</ItemGroup>

<ItemGroup>
<Content Include="**/*.dialog" />
<Content Include="**/*.lg" />
<Content Include="**/*.lu" />
<Content Include="**/*.schema" />
<Content Include="**/*.uischema" />
<Content Include="**/*.qna" />
</ItemGroup>

<PropertyGroup>
<!-- Disable warning for SA0001 "XML comment analysis is disabled due to project configuration" which is not true -->
<!-- Disable warning for SA1649 "file name should match first type name" due to use of generics -->
<NoWarn>$(NoWarn),SA0001,SA1649</NoWarn>
</PropertyGroup>

</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"$schema": "https://schemas.botframework.com/schemas/component/v1.0/component.schema",
"$role": "implements(Microsoft.IDialog)",
"title": "Call Transfer",
"description": "Phone number to transfer the call to (in E.164 format such as +1425123456)",
"type": "object",
"required": [
"phoneNumber"
],
"additionalProperties": false,
"properties": {
"phoneNumber": {
"$ref": "schema:#/definitions/stringExpression",
"title": "Phone Number",
"description": "Phone number to transfer the call to.",
"examples": [
"in E.164 format such as +1425123456"
]
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"$schema": "https://schemas.botframework.com/schemas/ui/v1.0/ui.schema",
"form": {
"label": "Transfer a call",
"subtitle": "Call Transfer",
"order": [
"phoneNumber",
"*"
],
"properties": {
"phoneNumber": {
"intellisenseScopes": [
"variable-scopes"
]
}
}
},
"menu": {
"label": "Transfer a call",
"submenu": [ "Channels", "Telephony" ]
},
"flow": {
"widget": "ActionCard",
"body": "=action.phoneNumber"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

namespace Microsoft.Bot.Components.Telephony
{
using Microsoft.Bot.Builder;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

usings outside

using Microsoft.Bot.Builder.Dialogs.Declarative;
using Microsoft.Bot.Components.Telephony.Actions;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;

/// <summary>
/// Telephony actions registration.
/// </summary>
public class TelephonyBotComponent : BotComponent
{
/// <inheritdoc/>
public override void ConfigureServices(IServiceCollection services, IConfiguration configuration)
{
// Conditionals
services.AddSingleton<DeclarativeType>(sp => new DeclarativeType<CallTransfer>(CallTransfer.Kind));
}
}
}
6 changes: 6 additions & 0 deletions packages/Microsoft.Bot.Components.sln
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Bot.Components.Ad
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Bot.Components.Teams", "Teams\Microsoft.Bot.Components.Teams.csproj", "{FD29CBA6-C18F-498B-9F00-A3C34C1BEC5F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Bot.Components.Telephony", "Microsoft.Bot.Components.Telephony\Microsoft.Bot.Components.Telephony.csproj", "{A854B5EC-3A34-4D1F-8080-F0846DEDF63F}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand All @@ -27,6 +29,10 @@ Global
{FD29CBA6-C18F-498B-9F00-A3C34C1BEC5F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FD29CBA6-C18F-498B-9F00-A3C34C1BEC5F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FD29CBA6-C18F-498B-9F00-A3C34C1BEC5F}.Release|Any CPU.Build.0 = Release|Any CPU
{A854B5EC-3A34-4D1F-8080-F0846DEDF63F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A854B5EC-3A34-4D1F-8080-F0846DEDF63F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A854B5EC-3A34-4D1F-8080-F0846DEDF63F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A854B5EC-3A34-4D1F-8080-F0846DEDF63F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down