javabandwidthtranscriptioncall-recording

How to transcribe bandwidth call recordings in java


My application uses https://app.bandwidth.com/ for receiving incoming calls. I have an api to handle the incoming calls which record the calls when the call is not answered(This recording is treated as a voice mail).

if (eventType.equalsIgnoreCase(EventType.ANSWER.toString())) {
   Timestamp callStartTime = new Timestamp(TimeUtil.now().getTime());
   incomingCall.setCallTime(callStartTime);
   callStatus = transferCall(callId, incomingCall.getVoiceForwardNumber(), 1);
}
else if (eventType.equalsIgnoreCase(EventType.TIMEOUT.toString())) {
   voiceMailIntro(callId);
}
else if (eventType.equalsIgnoreCase(EventType.SPEAK.toString()) && PLAYBACK_STOP.equalsIgnoreCase(callState)) {
    recordVoiceMail(callId);
}
else if (eventType.equalsIgnoreCase(EventType.RECORDING.toString()) && 
  state.equalsIgnoreCase(BandwidthCallStatus.COMPLETE.toString())) {
    createTranscription(recordingId);
}
else if (eventType.equalsIgnoreCase(EventType.TRANSCRIPTION.toString()) && status.equalsIgnoreCase(BandwidthCallStatus.COMPLETED.toString())) {
    incomingCall.setVoiceMail(text);
}

This is the code for recording call

private void recordVoiceMail(String callId) {
   BandwidthClient client = BandwidthClient.getInstance();
   client.setCredentials(bandwidthUserId, bandwidthApiToken, bandwidthApiSecret);
   try {
      Call call = Call.get(client, callId);
       call.recordingOn();
   } catch (Exception e) {
     log.error("An exception occurred while recording voice mail : " + 
     e.getMessage(), e);
   }
}

Now i need to transcribe these vocie mails. From documentation i got methods in python, js, c#, ruby etc. to transcribe the recordings using the recordings. For example in js,

client.Recording.createTranscription(recordingId, function(err, transcription){});

I searched every where, but i couldn't find any method in java for that. Can any one help me if you know ?


Solution

  • Anyway, as I see, you need that link for java doc.

    And here you can follow to java sdk located on Github.

    And, also, you can find some more information about transcriptions API here which you are looking for.

    First of all, why do you need that? Perhaps, you do not need that.

    As I find, you can't do transcribe with POJO, but you can do something like that.

    If you want to do that, you can make it with

    public void transcribeOn() throws Exception {
        final List<Recording> list = Recording.list(0, 5);
    
        if (!list.isEmpty()) {
            final Recording recording = Recording.get(list.get(0).getId());
            System.out.println("\nRecording by Id");
            System.out.println(recording);
    
            final String recordingUri = mockClient.getUserResourceUri(BandwidthConstants.RECORDINGS_URI_PATH);
            client.post(recordingUri + "/" + list.get(0).getId() + "/transcriptions", null);
            final JSONObject jsonObject = call.toJSONObject(client.get(recordingUri, null));
            call.updateProperties(jsonObject);
        }
    }
    

    I'm not sure it works correctly, but I hope it put you on correct way