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

Commit

Permalink
Adding Telephony preview package, this includes Call Transfer Activit… (
Browse files Browse the repository at this point in the history
#942)

* Adding Telephony preview package, this includes Call Transfer Activity currently and it will be a place for all telephony extentions for composer

* addressing comments/error handling/stylecop issues

* Revert "addressing comments/error handling/stylecop issues"

This reverts commit 410c06f.

* updates based on comments/stylecop and throwing errors

* moving to Telephony folder

* updating solution too

Co-authored-by: Vanshika Sinha <vasinha@microsoft.com>
  • Loading branch information
vanshu86 and Vanshika Sinha authored Apr 23, 2021
1 parent ce74a7b commit 6eb4d73
Show file tree
Hide file tree
Showing 6 changed files with 187 additions and 0 deletions.
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", "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
66 changes: 66 additions & 0 deletions packages/Telephony/Actions/CallTransfer.cs
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;
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);
}
}
}
44 changes: 44 additions & 0 deletions packages/Telephony/Microsoft.Bot.Components.Telephony.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
<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>
<PackageTags>msbot-component;msbot-action</PackageTags>
</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>
21 changes: 21 additions & 0 deletions packages/Telephony/Schemas/Microsoft.Telephony.CallTransfer.schema
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"
}
}
24 changes: 24 additions & 0 deletions packages/Telephony/TelephonyBotComponent.cs
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;
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));
}
}
}

0 comments on commit 6eb4d73

Please sign in to comment.