Index.php 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: 97
  5. */
  6. namespace app\tytw\controller;
  7. use app\BaseController;
  8. use Darabonba\OpenApi\OpenApiClient;
  9. use AlibabaCloud\OpenApiUtil\OpenApiUtilClient;
  10. use Darabonba\OpenApi\Models\Config;
  11. use Darabonba\OpenApi\Models\Params;
  12. use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
  13. use Darabonba\OpenApi\Models\OpenApiRequest;
  14. use think\facade\Env;
  15. class Index extends BaseController{
  16. public function addtaskone(){
  17. $overview = $_GET['overview'];
  18. $audiourl = $_GET['audiourl'];
  19. if(!$overview){
  20. echo "请传入音频解析方向的描述";
  21. die;
  22. }
  23. if(!$audiourl){
  24. echo "请传入音频文件链接";
  25. die;
  26. }
  27. $result = $this->createTaskOneInfo($audiourl,$overview);
  28. var_dump($result);
  29. }
  30. public function gettaskinfo(){
  31. $taskid = $_GET['taskid'];
  32. if(!$taskid){
  33. echo "请传入听悟任务的ID";
  34. die;
  35. }
  36. $result = $this->getTaskOneInfo($taskid);
  37. var_dump($result);
  38. }
  39. /**
  40. * 使用AK&SK初始化账号Client
  41. * @return OpenApiClient Client
  42. */
  43. public static function createClient(){
  44. // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
  45. // 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/311677.html。
  46. $config = new Config([
  47. // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
  48. "accessKeyId" => Env::get("AliyunTingwu.AccessKeyId"),
  49. // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
  50. "accessKeySecret" => Env::get("AliyunTingwu.AccessKeySecret")
  51. ]);
  52. // Endpoint 请参考 https://api.aliyun.com/product/tingwu
  53. $config->endpoint = "tingwu.cn-beijing.aliyuncs.com";
  54. return new OpenApiClient($config);
  55. }
  56. /**
  57. * API 相关
  58. * @return Params OpenApi.Params
  59. */
  60. public static function createTaskApiInfo(){
  61. $params = new Params([
  62. // 接口名称
  63. "action" => "CreateTask",
  64. // 接口版本
  65. "version" => "2023-09-30",
  66. // 接口协议
  67. "protocol" => "HTTPS",
  68. // 接口 HTTP 方法
  69. "method" => "PUT",
  70. "authType" => "AK",
  71. "style" => "ROA",
  72. // 接口 PATH
  73. "pathname" => "/openapi/tingwu/v2/tasks",
  74. // 接口请求体内容格式
  75. "reqBodyType" => "json",
  76. // 接口响应体内容格式
  77. "bodyType" => "json"
  78. ]);
  79. return $params;
  80. }
  81. /**
  82. * @param string[] $args
  83. * @return void
  84. */
  85. public static function createTaskOneInfo($audiourl='',$overview=''){
  86. $client = self::createClient();
  87. $params = self::createTaskApiInfo();
  88. // query params
  89. $queries = [];
  90. $queries["type"] = "offline";
  91. // body params
  92. // $body = [
  93. // "AppKey" => "jB3lTWgWwCCmO12g",
  94. // "Input" => [
  95. // "SourceLanguage" => "cn",
  96. // "FileUrl" => "https://crmapi.kedingdang.com/Intentionclient/getHuijieCallidRecordingFile?callid=9903ca31-b0c5-4d9b-aad1-cd6f97f87c43"
  97. // ]
  98. // ];
  99. // --- 之前模拟的数据
  100. //设置数据项 - - 第五层
  101. $contents = array();
  102. $contents['Name'] = "test";
  103. $contents['Prompt'] = $overview?($overview.":\n {Transcription}"):"对话中客户表达的完整内容输出出来,并且请帮我将下面的对话进行总结,分析对话中客户是否有下单意愿以及商品是否感兴趣:\n {Transcription}";
  104. $contents['Model'] = "tingwu-turbo";
  105. $contents['TransType'] = "chat";
  106. //设置数据项 - - 第四层
  107. $customPrompt = array();
  108. $customPrompt['Contents'] = $contents;
  109. //设置数据项 - - 第三层
  110. $parameters = array();
  111. $parameters['CustomPromptEnabled'] = 'True';
  112. $parameters['CustomPrompt'] = $customPrompt;
  113. $inputone = array();
  114. $inputone['SourceLanguage'] = 'cn';
  115. $inputone['TaskKey'] = 'task'.'123123'.time();
  116. $inputone['FileUrl'] = $audiourl?$audiourl:'https://crmapi.kedingdang.com/Intentionclient/getHuijieCallidRecordingFile?callid=9903ca31-b0c5-4d9b-aad1-cd6f97f87c43';
  117. //设置数据项 - - 第二层
  118. $body = array();
  119. $body['AppKey'] = 'jB3lTWgWwCCmO12g';
  120. $body['Input'] = $inputone;
  121. $body['Parameters'] = $parameters;
  122. // runtime options
  123. $runtime = new RuntimeOptions([]);
  124. $request = new OpenApiRequest([
  125. "query" => OpenApiUtilClient::query($queries),
  126. "body" => $body
  127. ]);
  128. // 复制代码运行请自行打印 API 的返回值
  129. // 返回值实际为 Map 类型,可从 Map 中获得三类数据:响应体 body、响应头 headers、HTTP 返回的状态码 statusCode。
  130. $result = $client->callApi($params, $request, $runtime);
  131. return $result;
  132. }
  133. /**
  134. * API 相关
  135. * @param string $TaskId
  136. * @return Params OpenApi.Params
  137. */
  138. public static function getTaskApiInfo($TaskId){
  139. $params = new Params([
  140. // 接口名称
  141. "action" => "GetTaskInfo",
  142. // 接口版本
  143. "version" => "2023-09-30",
  144. // 接口协议
  145. "protocol" => "HTTPS",
  146. // 接口 HTTP 方法
  147. "method" => "GET",
  148. "authType" => "AK",
  149. "style" => "ROA",
  150. // 接口 PATH
  151. "pathname" => "/openapi/tingwu/v2/tasks/" . $TaskId . "",
  152. // 接口请求体内容格式
  153. "reqBodyType" => "json",
  154. // 接口响应体内容格式
  155. "bodyType" => "json"
  156. ]);
  157. return $params;
  158. }
  159. /**
  160. * @param string[] $args
  161. * @return void
  162. */
  163. public static function getTaskOneInfo($args){
  164. $client = self::createClient();
  165. $params = self::getTaskApiInfo($args);//"5125c43149db4e01a2bf92bb6d34128b"
  166. // runtime options
  167. $runtime = new RuntimeOptions([]);
  168. $request = new OpenApiRequest([]);
  169. // 复制代码运行请自行打印 API 的返回值
  170. // 返回值实际为 Map 类型,可从 Map 中获得三类数据:响应体 body、响应头 headers、HTTP 返回的状态码 statusCode。
  171. $result = $client->callApi($params, $request, $runtime);
  172. return $result;
  173. }
  174. }