Skip to main content

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

vm9000.jpg


Reply