当 AccessVivContext 不是目标时如何访问 vivContext?

How to access vivContext when AccessVivContext is not the Goal?

我正尝试在我的胶囊中提供 vivContext 信息。

我看过 here: 如果我将 AccessVivContext 设置为训练话语的目标,我可以在我的胶囊中获取上下文。但是我通常如何访问它?

我试过在我的操作返回的结构中简单地输入一个 vivContext 属性。

action (myAction) {
  description (do the thing)
  type (Search)
  collect {
    input (locale) { // this is in vivContext
      ...

    }
  }
  output(myOutput)
} 

并且我定义了一个要在 myOutput 结构中返回的原始类型 "locale":

structure (myOutput) {
  description (...)
   property (locale) {
     type (locale) // hoping to return $vivContext.locale here
     min (Required) max (One)
  }
}

但这似乎并没有调用 AccessVivContext.js 来获取上下文。

你定义端点了吗? $vivContext 是一个特殊变量,您可以在 javascript 级别定义它。无需从动作中传递它。这就是我建议的编码方式。

  1. 定义一个动作

action (GetLocale) { type (Constructor) output(Locale) }

  1. 定义一个概念

text(Locale)

  1. 定义 getLocale.js

module.exports.function = function getLocale ($vivContext) { return $vivContext.locale; }

  1. 将您的操作映射到 Javascript 代码

action-endpoints { action-endpoint (GetLocale) { accepted-inputs ($vivContext) local-endpoint ("getLocale.js") } }

https://bixbydevelopers.com/dev/docs/sample-capsules/samples/user-context