日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

语音服务——阿里云

發(fā)布時(shí)間:2023/12/3 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 语音服务——阿里云 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、語(yǔ)音通知

語(yǔ)音通知是指通過(guò)調(diào)用語(yǔ)音呼叫的API,從運(yùn)營(yíng)商網(wǎng)絡(luò)向指定號(hào)碼發(fā)起一通呼叫,呼叫被應(yīng)答后,播放一段指定的音頻。

根據(jù)音頻形式的不同,語(yǔ)音通知的API分為兩個(gè):

  • 若播放的音頻為固定內(nèi)容的音頻文件(mp3/wav),則調(diào)用語(yǔ)音文件外呼接口 。
  • 若播放的音頻為帶有變量的文本模板,每次調(diào)用時(shí)根據(jù)變量替換值從文本模板轉(zhuǎn)化為音頻文件,則調(diào)用文本轉(zhuǎn)語(yǔ)音外呼接口。
  • ?

    二、語(yǔ)音通知開(kāi)通流程

    • 購(gòu)買(mǎi)語(yǔ)音號(hào)碼
    • 創(chuàng)建語(yǔ)音模板
    • 語(yǔ)音資質(zhì)審核標(biāo)準(zhǔn)
    • 語(yǔ)音權(quán)限訪問(wèn)控制

    ?

    三、API接口

    A、撥打接口

    (1)SingleCallByVoice

    調(diào)用接口SingleCallByVoice發(fā)起語(yǔ)音文件類型的語(yǔ)音通知。

    (2)SingleCallByTts

    調(diào)用接口SingleCallByTts發(fā)起語(yǔ)音通知,播放的音頻為文本轉(zhuǎn)語(yǔ)音模板轉(zhuǎn)換后的音頻文件。

    (3)IvrCall(有按鍵回復(fù))

    調(diào)用接口IvrCall發(fā)起交互式語(yǔ)音通話。

    接口IvrCall用于發(fā)起交互式語(yǔ)音通話。用戶接聽(tīng)到電話后,播放一段語(yǔ)音,提示用戶按鍵進(jìn)行選擇,如果開(kāi)啟了消息回執(zhí),語(yǔ)音平臺(tái)會(huì)返回客戶按鍵信息給調(diào)用的業(yè)務(wù)系統(tǒng)。該接口可用于收集客戶的訂單確認(rèn)、問(wèn)卷調(diào)查、滿意度調(diào)查等信息。

    B、消息回執(zhí)

    語(yǔ)音服務(wù)提供的回執(zhí)消息類型包括:
    (1)呼叫記錄消息(VoiceReport)
    訂閱呼叫記錄消息(VoiceReport)可以在呼叫結(jié)束后獲取呼叫的記錄信息,包括通話類型、通話的開(kāi)始及結(jié)束時(shí)間、通話時(shí)長(zhǎng)、結(jié)束原因等。

    (2)錄音記錄消息(VoiceCallReport)
    訂閱呼叫中間狀態(tài)消息(VoiceCallReport),可以獲取呼叫過(guò)程中的通話狀態(tài)的信息,通常包括開(kāi)始、振鈴、接聽(tīng)、掛斷以及狀態(tài)產(chǎn)生的時(shí)間等。

    (3)呼叫記錄消息(VoiceRecordReport)
    訂閱錄音記錄消息(VoiceRecordReport),可以在通話結(jié)束后獲取通話的錄音記錄。

    (4)ASR實(shí)時(shí)消息(VoiceRTASRReport)
    訂閱ASR實(shí)時(shí)消息(VoiceRTASRReport),可以獲取點(diǎn)擊撥號(hào)通話中的實(shí)時(shí)文本轉(zhuǎn)換結(jié)果。

    ?

    四、JAVA SDK

    <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.1.0</version> </dependency

    (1)交互式語(yǔ)音應(yīng)答(ivrCall)

    1:下載SDK工具包
    SDK工具包中一共包含了2個(gè)類庫(kù),一個(gè)aliyun-java-sdk-core包,另外一個(gè)是alicom-dyvms-api包,將這兩個(gè)包執(zhí)行mvn package命令或者mvn deploy命令打包出相應(yīng)的jar包,添加到工程類庫(kù)中依賴使用。

    SDK&DEMO[下載地址]

    2: 編寫(xiě)樣例程序

    //可自助調(diào)整超時(shí)時(shí)間System.setProperty("sun.net.client.defaultConnectTimeout", "10000");System.setProperty("sun.net.client.defaultReadTimeout", "10000");//云通信產(chǎn)品-語(yǔ)音API服務(wù)產(chǎn)品名稱(產(chǎn)品名固定,無(wú)需修改)final String product = "Dyvmsapi";//產(chǎn)品域名(接口地址固定,無(wú)需修改)final String domain = "dyvmsapi.aliyuncs.com";//AK信息final String accessKeyId = "yourAccessKeyId";final String accessKeySecret = "yourAccessKeySecret";//初始化acsClient,暫不支持region化IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);IAcsClient acsClient = new DefaultAcsClient(profile);//組裝請(qǐng)求對(duì)象-具體描述見(jiàn)控制臺(tái)-文檔部分內(nèi)容IvrCallRequest request = new IvrCallRequest();//必填-被叫顯號(hào),可在語(yǔ)音控制臺(tái)中找到所購(gòu)買(mǎi)的顯號(hào)request.setCalledShowNumber("057156210000");//必填-被叫號(hào)碼request.setCalledNumber("15000000000");request.setPlayTimes(3L);//必填-語(yǔ)音文件ID或者tts模板的模板號(hào),有參數(shù)的模板需要設(shè)置模板變量的值//request.setStartCode("ebe3a2b5-c287-42a4-8299-fc40ae79a89f.wav");request.setStartCode("TTS_713900000");request.setStartTtsParams("{\"product\":\"aliyun\",\"code\":\"123\"}");List<MenuKeyMap> menuKeyMaps = new ArrayList<MenuKeyMap>();MenuKeyMap menuKeyMap1 = new MenuKeyMap();menuKeyMap1.setKey("1");menuKeyMap1.setCode("9a9d7222-670f-40b0-a3af.wav");menuKeyMaps.add(menuKeyMap1);MenuKeyMap menuKeyMap2 = new MenuKeyMap();menuKeyMap2.setKey("2");menuKeyMap2.setCode("44e3e577-3d3a-418f-932c.wav");menuKeyMaps.add(menuKeyMap2);MenuKeyMap menuKeyMap3 = new MenuKeyMap();menuKeyMap3.setKey("3");menuKeyMap3.setCode("TTS_71390000");menuKeyMap3.setTtsParams("{\"product\":\"aliyun\",\"code\":\"123\"}");menuKeyMaps.add(menuKeyMap3);request.setMenuKeyMaps(menuKeyMaps);//結(jié)束語(yǔ)可以是一個(gè)無(wú)參模板或者一個(gè)語(yǔ)音文件ID,但是如果StartCode是TTS類型的ByeCode也需要是TTS類型的,如果StartCode是錄音類型的ByeCode也需要是錄音類型的request.setByeCode("TTS_71400007");request.setTimeout(3000);request.setByeTtsParams("{\"product\":\"aliyun\",\"code\":\"123\"}");//可選-外部擴(kuò)展字段request.setOutId("yourOutId");//hint 此處可能會(huì)拋出異常,注意catchIvrCallResponse ivrCallResponse = acsClient.getAcsResponse(request);if(ivrCallResponse.getCode()!=null && ivrCallResponse.getCode().equals("OK")) {//請(qǐng)求成功}

    ?

    (2)語(yǔ)音回執(zhí)消息

    消息的訂閱
    云通信的所有業(yè)務(wù)消息都會(huì)通過(guò)MNS消息服務(wù)向外發(fā)送。目前語(yǔ)音服務(wù)支持的消息類型有:VoiceReport,VoiceCallReport,VoiceRecordReport。這三個(gè)類型的消息分別對(duì)應(yīng):呼叫記錄消息,呼叫中間狀態(tài)消息,錄音記錄消息。用戶需要先在控制臺(tái)訂閱對(duì)應(yīng)的消息,訂閱完消息后,你能拿到消息隊(duì)列名稱(queueName)。比如:Alicom-Queue-xxxxxx-VoiceReport。現(xiàn)在你可以使用我們提供的消息服務(wù)sdk接收消息了。首先替換你自己的accessKeyId與accessKeySecret,然后設(shè)置你自己需要獲取的消息所對(duì)應(yīng)的消息類型及分配給你的對(duì)應(yīng)消息類型的消息隊(duì)列,啟動(dòng)應(yīng)用就可以接收對(duì)應(yīng)的消息了。注意不同類型的消息返回的消息體里面包含的字段是不一樣的,用戶需要依據(jù)自己訂閱的消息做適當(dāng)?shù)男薷摹?/p>

    下載對(duì)應(yīng)語(yǔ)音的消息DEMO工程,工程所需要的所有依賴jar包都放在DEMO工程的lib目錄下,將對(duì)于的jar包引入到您的工程當(dāng)中既可按照DEMO樣例編寫(xiě)接收消息的程序。

    SDK&DEMO[下載地址]

    /*** 只能用于接收云通信的消息,不能用于接收其他業(yè)務(wù)的消息*/ public class ReceiveAlicomMsgDemo {private static Log logger=LogFactory.getLog(ReceiveAlicomMsgDemo.class);static class MyMessageListener implements MessageListener{private Gson gson=new Gson();@Overridepublic boolean dealMessage(Message message) {System.out.println("message handle: " + message.getReceiptHandle());System.out.println("message body: " + message.getMessageBodyAsString());System.out.println("message id: " + message.getMessageId());System.out.println("message dequeue count:" + message.getDequeueCount());try{Map<String,Object> contentMap=gson.fromJson(message.getMessageBodyAsString(), HashMap.class);//依據(jù)自己的消息類型,獲取對(duì)應(yīng)的字段String callId=(String)contentMap.get("call_id");String startTime=(String)contentMap.get("start_time");String endTime=(String)contentMap.get("end_time");String duration=(String)contentMap.get("duration");String statusCode=(String)contentMap.get("status_code");String statusMsg=(String)contentMap.get("status_msg");String outId=(String)contentMap.get("out_id");String dtmf=(String)contentMap.get("dtmf");//TODO 這里開(kāi)始寫(xiě)業(yè)務(wù)代碼}catch(com.google.gson.JsonSyntaxException e){logger.error("error_json_format:"+message.getMessageBodyAsString(),e);}Boolean dealResult=true;return dealResult;//返回true,則工具類自動(dòng)刪除已拉取的消息。}}public static void main(String[] args) throws com.aliyuncs.exceptions.ClientException, ParseException {DefaultAlicomMessagePuller puller=new DefaultAlicomMessagePuller();String accessKeyId="yourAccessKeyId";String accessKeySecret="yourAccessKeySecret";String messageType="VoiceReport"; //注意替換成你自己需要獲取的消息的類型String queueName="yourQueueName";//在云通信頁(yè)面開(kāi)通相應(yīng)業(yè)務(wù)消息后,就能在頁(yè)面上獲得對(duì)應(yīng)的queueNamepuller.startReceiveMsg(accessKeyId,accessKeySecret ,messageType,queueName, new MyMessageListener());} }

    ?

    創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

    總結(jié)

    以上是生活随笔為你收集整理的语音服务——阿里云的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。