如何使用 Twilio 获取录制的 wav 文件 Java API

How to get a recorded wav file using Twilio Java API

有人可以指点我吗,使用 Twilio Java API,不是! REST请求,如何获取具体调用的录音文件(.wav)

我已经阅读了所有与录音相关的文章 (https://support.twilio.com/hc/en-us/sections/205104748-Recording),但是其中 none 展示了如何使用 Java API.

我使用此代码作为起点,假设 CALL_SID 已知:

import com.twilio.Twilio;
import com.twilio.base.ResourceSet;
import com.twilio.rest.api.v2010.account.Recording;
import com.twilio.rest.api.v2010.account.RecordingReader;

public class DeleteRecordings1 {

    private static final String ACCOUNT_SID = "ACXXXXXXXXXXXXXXXXX";
    private static final String AUTH_TOKEN = "999aa999aaa999aaaa999";

    private static final String CALL_SID = "CA83837718818gdgdg";

    public static void main(String[] args) {
        try {       
            Twilio.init(ACCOUNT_SID, AUTH_TOKEN);

            RecordingReader recordingReader = Recording.reader();
                recordingReader.setCallSid(CALL_SID);

            ResourceSet<Recording> recordings = recordingReader.read();
            String recordingSid;
            for (Recording recording: recordings) { 
                recordingSid = recording.getSid();              

                //HERE! I want to restore the .wav file associated with that RECORD_SID ?¿

            }                       
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

一旦你知道 recordingSid 例如 RE557ce644e5ab84fa21cc21112e22c485

您可以在 https://api.twilio.com/2010-04-01/Accounts/ACXXXXX.../Recordings/RE557ce644e5ab84fa21cc21112e22c485.wav

获取 .wav 文件

您可以在 https://api.twilio.com/2010-04-01/Accounts/ACXXXXX.../Recordings/RE557ce644e5ab84fa21cc21112e22c485.mp3

获取 .mp3 文件

其中 ACXXXXX... 是您的 Twilio 帐户 SID (ACCOUNT_SID)

我放上最终代码,以防它能帮到别人:

import java.io.File;
import java.io.InputStream;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;

import com.twilio.Twilio;
import com.twilio.base.ResourceSet;
import com.twilio.rest.api.v2010.account.Recording;
import com.twilio.rest.api.v2010.account.RecordingReader;

public class GetCallRecordings {

    private static final String ACCOUNT_SID = "ACXXXXXXXXXXXXXXXXX";
    private static final String AUTH_TOKEN = "999aa999aaa999aaaa999";

    private static final String CALL_SID = "CA83837718818gdgdg";

    private static final String TWILIO_RES_URL = "https://api.twilio.com/2010-04-01/Accounts";
    private static final String REC_EXT = ".mp3";

    private static final String RUTA_RECS = "C:/recursos/grabaciones/";

    public static void main(String[] args) {
        try {
            Twilio.init(ACCOUNT_SID, AUTH_TOKEN);

            RecordingReader recordingReader = Recording.reader();
            recordingReader.setCallSid(CALL_SID);

            ResourceSet<Recording> recordings = recordingReader.read();

            String recordingSid;
            String urlGrabacion;
            String locGrabacion;

            InputStream in;

            for (Recording recording : recordings) {
                recordingSid = recording.getSid();
                urlGrabacion = TWILIO_RES_URL + "/" + ACCOUNT_SID + "/Recordings/" + recordingSid + REC_EXT;
                locGrabacion = RUTA_RECS + CALL_SID + "_" + recordingSid + REC_EXT;

                System.out.println("Recuperando grabacion " + recordingSid);
                System.out.println("Ubicacion remota " + urlGrabacion);

                if (!new File(RUTA_RECS).exists()) {
                    new File(RUTA_RECS).mkdirs();
                }

                in = new URL(urlGrabacion).openStream();
                Files.copy(in, Paths.get(locGrabacion), StandardCopyOption.REPLACE_EXISTING);

                System.out.println("Ubicacion local " + locGrabacion);

                in.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}