First I am unable to get even my own personal voicemail transcriptions using this method. It find the transcription record but I can't see any parameters with the transcription string.
Second how will I change this to access a Group's voicemail transcription?
Thanks.
using System; using System.Threading.Tasks; using RingCentral; namespace Account { class Account { static String SERVER_URL = "https://platform.ringcentral.com"; static String CLIENT_ID = "************"; static String CLIENT_SECRET = "********"; static String JWT_TOKEN = "************"; static RestClient restClient; static void Main(string[] args) { restClient = new RestClient(CLIENT_ID, CLIENT_SECRET, true, "VoiceMailTranscriptionGet"); restClient.Authorize(JWT_TOKEN).Wait(); GetMessage().Wait(); } static private async Task GetMessage() { ListMessagesParameters parameters = new ListMessagesParameters(); parameters.messageType = new String[] { "VoiceMail" }; var response = await restClient.Restapi().Account().Extension().MessageStore().List(parameters); foreach (GetMessageInfoResponse record in response.records) { if (record.attachments != null) { foreach (var attachment in record.attachments) { var fileName = "./src/test/resources/" + record.attachments[0].id + "_voicemail.txt"; if (attachment.type == "AudioTranscription") { var res = restClient.Restapi().Account().Extension().MessageStore(record.id.ToString()).Content(attachment.id.ToString()).Get(); //Path path = Paths.get(fileName); //Files.write(path, res); } } } } } } }
This is the call queue I will need to access.
https://service.ringcentral.com/application/company/departments/63448800004/messages
First of all, you have to make sure also the voicemail transcription is Completed
if (attachment.type == "AudioTranscription" && record.vmTranscriptionStatus == "Completed") { ... var res = await restClient.Restapi().Account().Extension().MessageStore(record.id.ToString()).Content(attachment.id.ToString()).Get(); using (BinaryWriter writer = new BinaryWriter(System.IO.File.Open(path + fileName, FileMode.Create))) { writer.Write(res); writer.Flush(); writer.Close(); } }
If you need to access and download a message store content (e.g. voicemail) of another user extension, including a group's voicemail (call queue), you must authenticate your app with a super admin user, and specify the extension id in the path as shown in the example below:
... var EXTENSION_ID = "12345678890"; var resp = await restClient.Restapi().Account().Extension(EXTENSION_ID).MessageStore().List(parameters); foreach (var record in resp.records) { ... var res = await restClient.Restapi().Account().Extension(EXTENSION_ID).MessageStore(record.id.ToString()).Content(attachment.id.ToString()).Get(); ... }
I added the EXTENSION_ID var and valued it to 9000, now I get "Resource for parameter [extensionId] is not found"
this is for a call queue group with an extension of 9000
Extension id is not the extension number. 9000 is your queue extension number.
You can read the call queue info using the list extensions API (set the type query param to ["Department"]) and grab the id from the result.
Ok, thank you. Looks like I'll need to create a new app anyway to add the EditMessages scope so I can mark them as read once I get the transcription.
Thanks
ok, thanks again
A new Community is coming to RingCentral!
Posts are currently read-only as we transition into our new platform.We thank you for your patience
during this downtime.
Try Workflow Builder
Did you know you can easily automate tasks like responding to SMS, team messages, and more? Plus it's included with RingCentral Video and RingEX plans!Try RingCentral Workflow Builder