Skip to content

Commit

Permalink
Merge in main
Browse files Browse the repository at this point in the history
  • Loading branch information
alzimmermsft committed Oct 23, 2024
2 parents c99e4eb + 44f65d4 commit 49836b6
Show file tree
Hide file tree
Showing 131 changed files with 6,578 additions and 2,681 deletions.
11 changes: 11 additions & 0 deletions .vscode/cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -1328,6 +1328,17 @@
"tmpdir",
"aarch",
"CNCF"
]
},
{
"filename": "sdk/translation/azure-ai-translation-document/**",
"words": [
"cancelacurrentlyprocessingorqueuedtranslation",
"returnsalistofbatchrequestssubmittedandthestatusforeachrequest",
"returnsalistofsupporteddocumentformats",
"returnsthestatusofasingledocumentinabatchtranslationrequest",
"submitadocumenttranslationrequesttothedocumenttranslationservice",
"translateasingledocument"
]
}
],
Expand Down
6 changes: 3 additions & 3 deletions eng/versioning/version_client.txt
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ com.azure:azure-ai-formrecognizer-perf;1.0.0-beta.1;1.0.0-beta.1
com.azure:azure-ai-inference;1.0.0-beta.2;1.0.0-beta.3
com.azure:azure-ai-metricsadvisor;1.2.2;1.3.0-beta.1
com.azure:azure-ai-metricsadvisor-perf;1.0.0-beta.1;1.0.0-beta.1
com.azure:azure-ai-openai;1.0.0-beta.11;1.0.0-beta.12
com.azure:azure-ai-openai;1.0.0-beta.12;1.0.0-beta.13
com.azure:azure-ai-openai-assistants;1.0.0-beta.4;1.0.0-beta.5
com.azure:azure-ai-personalizer;1.0.0-beta.1;1.0.0-beta.2
com.azure:azure-ai-textanalytics;5.5.2;5.6.0-beta.1
Expand Down Expand Up @@ -76,7 +76,7 @@ com.azure:azure-communication-common-perf;1.0.0-beta.1;1.0.0-beta.1
com.azure:azure-communication-email;1.0.17;1.1.0-beta.2
com.azure:azure-communication-identity;1.6.0;1.7.0-beta.1
com.azure:azure-communication-jobrouter;1.1.8;2.0.0-beta.1
com.azure:azure-communication-messages;1.0.7;1.1.0-beta.1
com.azure:azure-communication-messages;1.0.7;1.1.0
com.azure:azure-communication-phonenumbers;1.1.17;1.2.0-beta.4
com.azure:azure-communication-rooms;1.1.6;1.2.0-beta.1
com.azure:azure-communication-sms;1.1.28;1.2.0-beta.1
Expand Down Expand Up @@ -208,7 +208,7 @@ com.azure:identity-test-container;1.0.0-beta.1;1.0.0-beta.1
com.azure:identity-test-function;1.0.0-beta.1;1.0.0-beta.1
com.azure:identity-test-vm;1.0.0-beta.1;1.0.0-beta.1
com.azure:identity-test-webapp;1.0.0-beta.1;1.0.0-beta.1
com.azure:azure-ai-vision-face;1.0.0-beta.1;1.0.0-beta.2
com.azure:azure-ai-vision-face;1.0.0-beta.2;1.0.0-beta.3
com.azure.spring:azure-monitor-spring-native;1.0.0-beta.1;1.0.0-beta.1
com.azure.spring:azure-monitor-spring-native-test;1.0.0-beta.1;1.0.0-beta.1
com.azure.spring:spring-cloud-azure-appconfiguration-config-web;5.17.0;5.18.0-beta.1
Expand Down
14 changes: 6 additions & 8 deletions sdk/communication/azure-communication-messages/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
# Release History

## 1.1.0-beta.1 (Unreleased)
## 1.1.0 (2024-10-30)

### Features Added

### Breaking Changes

### Bugs Fixed

### Other Changes

- Added ImageNotificationContent to send image messgae.
- Added DocumentNotificationContent to send document message.
- Added VideoNotificationContent to send video message.
- Added AudioNotificationContent to send audio message.
- Deprecated MediaNotificationContent.

## 1.0.7 (2024-09-27)

Expand Down
69 changes: 65 additions & 4 deletions sdk/communication/azure-communication-messages/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -194,12 +194,13 @@ private void sendTextMessage() {
}
```

```java readme-sample-sendMediaMessage
```java readme-sample-sendImageMessage
/*
* This sample shows how to send simple media (image, video, document) message with below details
* This sample shows how to send image message with below details.
* Supported image - image/jpeg (.jpeg), image/png (.png)
* Note: Business cannot initiate conversation with media message.
* */
public void sendMediaMessage() {
public void sendImageMessage() {
//Update the Media URL
String mediaUrl = "https://wallpapercave.com/wp/wp2163723.jpg";
List<String> recipients = new ArrayList<>();
Expand All @@ -208,7 +209,67 @@ public void sendMediaMessage() {
.connectionString("<CONNECTION_STRING>")
.buildClient();
SendMessageResult result = client.send(
new MediaNotificationContent("<CHANNEL_ID>", recipients, mediaUrl));
new ImageNotificationContent("<CHANNEL_ID>", recipients, mediaUrl));

result.getReceipts().forEach(r -> System.out.println("Message sent to:" + r.getTo() + " and message id:" + r.getMessageId()));
}
```
```java readme-sample-sendVideoMessage
/*
* This sample shows how to send video message with below details
* Supported video - video/3gp (.3gp), video/mp4 (.mp4)
* Note: Business cannot initiate conversation with media message.
* */
public void sendVideoMessage() {
//Update the Media URL
String mediaUrl = "https://sample-videos.com/video321/mp4/480/big_buck_bunny_480p_1mb.mp4";
List<String> recipients = new ArrayList<>();
recipients.add("<RECIPIENT_IDENTIFIER e.g. PhoneNumber>");
NotificationMessagesClient client = new NotificationMessagesClientBuilder()
.connectionString("<CONNECTION_STRING>")
.buildClient();
SendMessageResult result = client.send(
new VideoNotificationContent("<CHANNEL_ID>", recipients, mediaUrl));

result.getReceipts().forEach(r -> System.out.println("Message sent to:" + r.getTo() + " and message id:" + r.getMessageId()));
}
```
```java readme-sample-sendAudioMessage
/*
* This sample shows how to send audio message with below details
* Supported audio - audio/aac (.aac), audio/amr (.amr), audio/mpeg (.mp3), audio/a4a (.mp4), audio/ogg (.ogg )
* Note: Business cannot initiate conversation with media message.
* */
public void sendAudioMessage() {
//Update the Media URL
String mediaUrl = "https://sample-videos.com/audio/mp3/wave.mp3";
List<String> recipients = new ArrayList<>();
recipients.add("<RECIPIENT_IDENTIFIER e.g. PhoneNumber>");
NotificationMessagesClient client = new NotificationMessagesClientBuilder()
.connectionString("<CONNECTION_STRING>")
.buildClient();
SendMessageResult result = client.send(
new AudioNotificationContent("<CHANNEL_ID>", recipients, mediaUrl));

result.getReceipts().forEach(r -> System.out.println("Message sent to:" + r.getTo() + " and message id:" + r.getMessageId()));
}
```
```java readme-sample-sendDocumentMessage
/*
* This sample shows how to send document message with below details
* Supported Document type - Plain Text (.txt), PDF (.pdf), Microsoft Excel, Word, PowerPoint
* Note: Business cannot initiate conversation with media message.
* */
public void sendDocumentMessage() {
//Update the Media URL
String mediaUrl = "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf";
List<String> recipients = new ArrayList<>();
recipients.add("<RECIPIENT_IDENTIFIER e.g. PhoneNumber>");
NotificationMessagesClient client = new NotificationMessagesClientBuilder()
.connectionString("<CONNECTION_STRING>")
.buildClient();
SendMessageResult result = client.send(
new DocumentNotificationContent("<CHANNEL_ID>", recipients, mediaUrl));

result.getReceipts().forEach(r -> System.out.println("Message sent to:" + r.getTo() + " and message id:" + r.getMessageId()));
}
Expand Down
2 changes: 1 addition & 1 deletion sdk/communication/azure-communication-messages/assets.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
"AssetsRepo" : "Azure/azure-sdk-assets",
"AssetsRepoPrefixPath" : "java",
"TagPrefix" : "java/communication/azure-communication-messages",
"Tag" : "java/communication/azure-communication-messages_4553d6f877"
"Tag" : "java/communication/azure-communication-messages_d7c7441f3b"
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import com.github.javaparser.ast.type.ClassOrInterfaceType;
import com.github.javaparser.javadoc.Javadoc;
import com.github.javaparser.javadoc.description.JavadocDescription;
import com.github.javaparser.javadoc.description.JavadocSnippet;
import org.slf4j.Logger;

public class MessagesSdkCustomization extends Customization {
Expand All @@ -25,26 +26,27 @@ public void customize(LibraryCustomization libraryCustomization, Logger logger)
updateBuilderClass(packageCustomization, "MessageTemplateClientBuilder");

PackageCustomization modelsPackage = libraryCustomization.getPackage("com.azure.communication.messages.models");
updateModelClassModifierToAbstract(modelsPackage, "NotificationContent");
updateModelClassModifierToAbstract(modelsPackage, "MessageTemplateValue");
updateModelClassModifierToAbstract(modelsPackage, "MessageTemplateItem");
customizeMessageTemplateLocation(modelsPackage);
customizeNotificationContentModel(modelsPackage);
customizeMessageTemplateValueModel(modelsPackage);
customizeMessageTemplateItemModel(modelsPackage);

PackageCustomization channelsModelsPackage = libraryCustomization.getPackage(
"com.azure.communication.messages.models.channels");
updateWhatsAppMessageTemplateItemWithBinaryDataContent(channelsModelsPackage);
}

private void customizeNotificationContentModel(PackageCustomization modelsPackage) {
modelsPackage.getClass("NotificationContent")
.customizeAst(ast -> ast.getPrimaryType()
.ifPresent(clazz -> clazz.getConstructors().get(0).setModifiers(Modifier.Keyword.PROTECTED)));
AddDeprecateAnnotationToMediaNotificationContent(modelsPackage);

AddDeprecateAnnotationForImageV0CommunicationKind(modelsPackage);
}

private void customizeMessageTemplateValueModel(PackageCustomization modelsPackage) {
modelsPackage.getClass("MessageTemplateValue")
.customizeAst(ast -> ast.getPrimaryType()
.ifPresent(clazz -> clazz.getConstructors().get(0).setModifiers(Modifier.Keyword.PROTECTED)));
private void updateModelClassModifierToAbstract(PackageCustomization modelsPackage, String className) {
modelsPackage.getClass(className)
.customizeAst(ast -> ast.getClassByName(className)
.ifPresent(clazz -> clazz.setModifiers(Modifier.Keyword.PUBLIC, Modifier.Keyword.ABSTRACT)
.getConstructors().get(0).setModifiers(Modifier.Keyword.PROTECTED)));
removeJsonKnownDiscriminatorMethod(modelsPackage, className);
}

private void customizeMessageTemplateItemModel(PackageCustomization modelsPackage) {
Expand Down Expand Up @@ -190,4 +192,52 @@ private void updateWhatsAppMessageTemplateItemWithBinaryDataContent(PackageCusto
});
});
}

private void removeJsonKnownDiscriminatorMethod(PackageCustomization modelPackage, String className) {
modelPackage.getClass(className).customizeAst(ast -> {
ast.getClassByName(className).ifPresent( clazz -> {
String fromJson = clazz.getMethodsByName("fromJson")
.get(0).getBody().get().toString()
.replace("return fromJsonKnownDiscriminator(readerToUse.reset());",
"throw new IllegalStateException(\"Invalid Kind value - \"+discriminatorValue); ");
clazz.getMethodsByName("fromJson").get(0).setBody(StaticJavaParser.parseBlock(fromJson));
clazz.getMethodsByName("fromJsonKnownDiscriminator").get(0).remove();
});
});
}

private void AddDeprecateAnnotationToMediaNotificationContent(PackageCustomization modelsPackage) {
modelsPackage.getClass("MediaNotificationContent").customizeAst(ast -> {
ast.getClassByName("MediaNotificationContent").ifPresent(clazz -> {
clazz.addAnnotation(Deprecated.class);

// Remove the @deprecated comment as it cause special character and fails in style check
clazz.getJavadoc().ifPresent(doc -> {
String description = doc.getDescription().getElements().get(0).toText()
.replace("&#064;deprecated", "@deprecated");
doc.getDescription().getElements().set(0, new JavadocSnippet(description));
clazz.setJavadocComment(doc.toComment());
});
});
});
}

private void AddDeprecateAnnotationForImageV0CommunicationKind(PackageCustomization modelsPackage) {
modelsPackage.getClass("CommunicationMessageKind").customizeAst(ast -> {
ast.getClassByName("CommunicationMessageKind")
.flatMap(clazz -> clazz.getFieldByName("IMAGE_V0"))
.ifPresent(f -> {
f.addAnnotation(Deprecated.class);
f.getJavadocComment().ifPresent(comment -> {
/*
Reducing size comment by replacing with @deprecated since it doesn't fit single line
and fails in style check
*/
String content = comment.getContent()
.replace("Image message type.", "@deprecated");
f.setJavadocComment(content);
});
});
});
}
}
2 changes: 1 addition & 1 deletion sdk/communication/azure-communication-messages/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

<groupId>com.azure</groupId>
<artifactId>azure-communication-messages</artifactId>
<version>1.1.0-beta.1</version> <!-- {x-version-update;com.azure:azure-communication-messages;current} -->
<version>1.1.0</version> <!-- {x-version-update;com.azure:azure-communication-messages;current} -->
<packaging>jar</packaging>

<name>Microsoft Azure client library for Azure Communication Services - Messaging application</name>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,12 @@ public enum MessagesServiceVersion implements ServiceVersion {
/**
* Enum value 2024-02-01.
*/
V2024_02_01("2024-02-01");
V2024_02_01("2024-02-01"),

/**
* Enum value 2024-08-30.
*/
V2024_08_30("2024-08-30");

private final String version;

Expand All @@ -35,6 +40,6 @@ public String getVersion() {
* @return The latest {@link MessagesServiceVersion}.
*/
public static MessagesServiceVersion getLatest() {
return V2024_02_01;
return V2024_08_30;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public final class NotificationMessagesAsyncClient {
* <pre>
* {@code
* {
* kind: String(text/image/template) (Required)
* kind: String(text/image/image_v0/document/video/audio/template) (Required)
* channelRegistrationId: String (Required)
* to (Required): [
* String (Required)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public final class NotificationMessagesClient {
* <pre>
* {@code
* {
* kind: String(text/image/template) (Required)
* kind: String(text/image/image_v0/document/video/audio/template) (Required)
* channelRegistrationId: String (Required)
* to (Required): [
* String (Required)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ Response<BinaryData> downloadMediaSync(@HostParam("endpoint") String endpoint,
* <pre>
* {@code
* {
* kind: String(text/image/template) (Required)
* kind: String(text/image/image_v0/document/video/audio/template) (Required)
* channelRegistrationId: String (Required)
* to (Required): [
* String (Required)
Expand Down Expand Up @@ -284,7 +284,7 @@ public Mono<Response<BinaryData>> sendWithResponseAsync(BinaryData notificationC
* <pre>
* {@code
* {
* kind: String(text/image/template) (Required)
* kind: String(text/image/image_v0/document/video/audio/template) (Required)
* channelRegistrationId: String (Required)
* to (Required): [
* String (Required)
Expand Down
Loading

0 comments on commit 49836b6

Please sign in to comment.