-
Notifications
You must be signed in to change notification settings - Fork 4.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature/communication server calling preview1 #21017
Feature/communication server calling preview1 #21017
Conversation
…nto feature/communication-ServerCalling-preview1
sdk/communication/Azure.Communication.Calling.Server/CHANGELOG.md
Outdated
Show resolved
Hide resolved
sdk/communication/Azure.Communication.Calling.Server/CHANGELOG.md
Outdated
Show resolved
Hide resolved
sdk/communication/Azure.Communication.Calling.Server/CHANGELOG.md
Outdated
Show resolved
Hide resolved
sdk/communication/Azure.Communication.Calling.Server/CHANGELOG.md
Outdated
Show resolved
Hide resolved
sdk/communication/Azure.Communication.Calling.Server/tests/samples/Sample1_CreateCall.md
Outdated
Show resolved
Hide resolved
sdk/communication/Azure.Communication.Calling.Server/src/CallClient.cs
Outdated
Show resolved
Hide resolved
sdk/communication/Azure.Communication.Calling.Server/src/CallClient.cs
Outdated
Show resolved
Hide resolved
sdk/communication/Azure.Communication.Calling.Server/src/CallClient.cs
Outdated
Show resolved
Hide resolved
sdk/communication/Azure.Communication.Calling.Server/src/CallClient.cs
Outdated
Show resolved
Hide resolved
This pull request is protected by Check Enforcer. What is Check Enforcer?Check Enforcer helps ensure all pull requests are covered by at least one check-run (typically an Azure Pipeline). When all check-runs associated with this pull request pass then Check Enforcer itself will pass. Why am I getting this message?You are getting this message because Check Enforcer did not detect any check-runs being associated with this pull request within five minutes. This may indicate that your pull request is not covered by any pipelines and so Check Enforcer is correctly blocking the pull request being merged. What should I do now?If the check-enforcer check-run is not passing and all other check-runs associated with this PR are passing (excluding license-cla) then you could try telling Check Enforcer to evaluate your pull request again. You can do this by adding a comment to this pull request as follows: What if I am onboarding a new service?Often, new services do not have validation pipelines associated with them. In order to bootstrap pipelines for a new service, please perform following steps: For data-plane/track 2 SDKs Issue the following command as a pull request comment:
For track 1 management-plane SDKsPlease open a separate PR and to your service SDK path in this file. Once that PR has been merged, you can re-run the pipeline to trigger the verification. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This a great start! I left some comments.
...mmunication/Azure.Communication.Calling.Server/src/Azure.Communication.Calling.Server.csproj
Outdated
Show resolved
Hide resolved
...mmunication/Azure.Communication.Calling.Server/src/Azure.Communication.Calling.Server.csproj
Outdated
Show resolved
Hide resolved
sdk/communication/Azure.Communication.Calling.Server/src/Models/ToneValue.cs
Outdated
Show resolved
Hide resolved
sdk/communication/Azure.Communication.Calling.Server/src/Models/ToneValue.cs
Outdated
Show resolved
Hide resolved
sdk/communication/Azure.Communication.Calling.Server/src/autorest.md
Outdated
Show resolved
Hide resolved
...on/Azure.Communication.Calling.Server/tests/Azure.Communication.Calling.Service.Tests.csproj
Outdated
Show resolved
Hide resolved
...ure.Communication.Calling.Server/tests/ServerCallingClients/ServerCallingClientsLiveTests.cs
Outdated
Show resolved
Hide resolved
|
||
namespace Azure.Communication | ||
{ | ||
internal partial class CommunicationUserIdentifierModel : IUtf8JsonSerializable |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same question, I thought Serialization code is supposed to be generated
Optional<string> conversationId = default; | ||
foreach (var property in element.EnumerateObject()) | ||
{ | ||
if (property.NameEquals("recordingId") || property.NameEquals("RecordingId")) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Questions about these Serialization classes v introduced:
- Looks like this is all manually written? Why is that?
- Why do the properties check names with different cases? (e.g recordingId and RecordingId)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I created an issue thread in the channel
@navali-msft
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@minnieliu - We have added these classes to deserialize the events which user received on the callback.
The reason for providing deserialization on our end is because of issue with deserializing CommunicationIdentifierModel. As Service side only understands model defined in Communication.Common, so it is sending that information to user and user don't have way to deserialize it.
We will fix point#2.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We have serializer and deserialzer for CommunicationIdentifierModel
in the Shared folder. Please refer to how the chat project is using them.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This Deserialization methods are generated if any of the response contains CommunicationIdentifierModel. In our case we don't have any such response. This is done for deserializing Events.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is fixed.
Co-authored-by: Paresh Arvind Patil <papati@microsoft.com>
EventSubscriptionType.DtmfReceived | ||
}); | ||
``` | ||
```C# Snippet:Azure_Communication_Call_Tests_CreateCallAsync |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The syntax for this snippet seems wrong... it is missing the end )
bracket that closes off CreateCallAsync
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for catching this. Addressed.
} | ||
} | ||
|
||
private static T AssertNotNull<T>(T argument, string argumentName) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We have added a PR that moves these into Azure.Core and we dont need to define them manually here. #21542
Please remove and refer to Arguments.cs instead.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Synced with master and remove those two methods.
…nto feature/communication-ServerCalling-preview1
…//github.com/Azure/azure-sdk-for-net into feature/communication-ServerCalling-preview1
…nto feature/communication-ServerCalling-preview1
…//github.com/Azure/azure-sdk-for-net into feature/communication-ServerCalling-preview1
…//github.com/Azure/azure-sdk-for-net into feature/communication-ServerCalling-preview1
…//github.com/Azure/azure-sdk-for-net into feature/communication-ServerCalling-preview1
- Create a Call from a Azure Communication Resource identity to a phone number | ||
- Specify request payload for the created call. | ||
|
||
#### You can find samples for each of these functions below. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is ####
the right mark up?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, we are intended to use it.
|
||
return RestClient.JoinCall( | ||
conversationId: conversationId, | ||
source: CommunicationIdentifierSerializer.Serialize(source), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you also need to check that the source is not null since you are serializing it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this will get addressed in the update.
|
||
return await RestClient.JoinCallAsync( | ||
conversationId: conversationId, | ||
source: CommunicationIdentifierSerializer.Serialize(source), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you also need to check that the source is not null since you are serializing it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
good catch, this will get addressed in the update.
return InstrumentClient(client); | ||
} | ||
|
||
// Todo: add CorrelationVectorLogs |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this still planning to be done or in the next PR?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is addressed, added in the update.
} | ||
], | ||
"Variables": { | ||
"AZURE_PHONE_NUMBER": "\u002B15129104698", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should be redacting our phone numbers in the recordings. See SMS or Phone Numbers SDK https://github.com/Azure/azure-sdk-for-net/blob/master/sdk/communication/Azure.Communication.Sms/tests/SmsClientRecordedTestSanitizer.cs
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is addressed in updates.
…nto feature/communication-ServerCalling-preview1
…//github.com/Azure/azure-sdk-for-net into feature/communication-ServerCalling-preview1
…nto feature/communication-ServerCalling-preview1
* Enable living testing. * Test Playback. * Add playaudio test record. * Add createcall test record. * Add delete call record. * Add hangup call test record. * Add cancelAllMediaOperations call test record. * Enable living tests. * Address comments.
/// </summary> | ||
public class CallingServerTestEnvironment : CommunicationTestEnvironment | ||
{ | ||
public string ToPhoneNumber => GetRecordedVariable(AzurePhoneNumber, options => options.IsSecret()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We probably need a separate phone number for these tests to avoid conflicts with the phone number and sms packages tests
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me for the initial PR. Feel free to merge once @minnieliu 's comments are applied.
Great job on your first PR!
All SDK Contribution checklist:
This checklist is used to make sure that common guidelines for a pull request are followed.
Draft
mode if it is:General Guidelines and Best Practices
Testing Guidelines
SDK Generation Guidelines
*.csproj
andAssemblyInfo.cs
files have been updated with the new version of the SDK. Please double check nuget.org current release version.Additional management plane SDK specific contribution checklist:
Note: Only applies to
Microsoft.Azure.Management.[RP]
orAzure.ResourceManager.[RP]
Management plane SDK Troubleshooting
If this is very first SDK for a services and you are adding new service folders directly under /SDK, please add
new service
label and/or contact assigned reviewer.If the check fails at the
Verify Code Generation
step, please ensure:generate.ps1/cmd
to generate this PR instead of callingautorest
directly.Please pay attention to the @microsoft.csharp version output after running
generate.ps1
. If it is lower than current released version (2.3.82), please run it again as it should pull down the latest version.Note: We have recently updated the PSH module called by
generate.ps1
to emit additional data. This would help reduce/eliminate the Code Verification check error. Please run following command:Old outstanding PR cleanup
Please note:
If PRs (including draft) has been out for more than 60 days and there are no responses from our query or followups, they will be closed to maintain a concise list for our reviewers.