@@ -247,6 +247,13 @@ class llm_task {
247
247
}
248
248
}
249
249
250
+ void trigger ()
251
+ {
252
+ if (out_callback_) {
253
+ out_callback_ (" True" );
254
+ }
255
+ }
256
+
250
257
bool delete_model ()
251
258
{
252
259
spotter_.reset ();
@@ -284,6 +291,9 @@ class llm_kws : public StackFlow {
284
291
llm_kws () : StackFlow(" kws" )
285
292
{
286
293
task_count_ = 1 ;
294
+ rpc_ctx_->register_rpc_action (" trigger" ,
295
+ std::bind (&llm_kws::trigger, this , std::placeholders::_1, std::placeholders::_2));
296
+
287
297
}
288
298
289
299
void play_awake_wav (const std::string &wav_file)
@@ -529,6 +539,38 @@ class llm_kws : public StackFlow {
529
539
return 0 ;
530
540
}
531
541
542
+ std::string trigger (pzmq *_pzmq, const std::shared_ptr<StackFlows::pzmq_data>& rawdata0)
543
+ {
544
+ const std::string rawdata = rawdata0->string ();
545
+ int pos = rawdata.find (" {" );
546
+ // SLOGI("llm_kws::trigger:json:%s", rawdata.substr(pos).c_str());
547
+
548
+ nlohmann::json error_body;
549
+ nlohmann::json data;
550
+ try {
551
+ data = nlohmann::json::parse (rawdata.substr (pos));
552
+ } catch (...) {
553
+ SLOGE (" setup json format error." );
554
+ error_body[" code" ] = -2 ;
555
+ error_body[" message" ] = " json format error." ;
556
+ send (" None" , " None" , error_body, " kws" );
557
+ return LLM_NONE;
558
+ }
559
+ auto work_id = data[" work_id" ].get <std::string>();
560
+
561
+ int work_id_num = sample_get_work_id_num (work_id);
562
+ if (llm_task_.find (work_id_num) == llm_task_.end ()) {
563
+ error_body[" code" ] = -6 ;
564
+ error_body[" message" ] = " Unit Does Not Exist" ;
565
+ send (" None" , " None" , error_body, work_id);
566
+ return LLM_NONE;
567
+ }
568
+
569
+ llm_task_[work_id_num]->trigger ();
570
+ return LLM_NONE;
571
+ }
572
+
573
+
532
574
~llm_kws ()
533
575
{
534
576
while (1 ) {
0 commit comments