Поделиться через


SrgsRuleRef Конструкторы

Определение

Инициализирует новый экземпляр класса SrgsRuleRef.

Перегрузки

SrgsRuleRef(SrgsRule)

Инициализирует новый экземпляр класса SrgsRuleRef и указывает правило для ссылки.

SrgsRuleRef(Uri)

Инициализирует новый экземпляр класса SrgsRuleRef и задает расположение внешнего файла грамматики, на который можно сослаться.

SrgsRuleRef(SrgsRule, String)

Инициализирует новый экземпляр класса SrgsRuleRef определяя правило, на которое необходимо создать ссылку, и строку, содержащую семантический ключ.

SrgsRuleRef(Uri, String)

Инициализирует новый экземпляр класса SrgsRuleRef, указывая расположение внешнего файла грамматики и идентификатор правила, на которые можно сослаться.

SrgsRuleRef(SrgsRule, String, String)

Инициализирует новый экземпляр класса SrgsRuleRef, указывая правило, на которое можно сослаться, псевдоним строки семантического словаря и параметры инициализации.

SrgsRuleRef(Uri, String, String)

Инициализирует новый экземпляр класса SrgsRuleRef, указывая расположение внешнего файла грамматики и идентификатор правила, а также псевдоним строки семантического словаря.

SrgsRuleRef(Uri, String, String, String)

Инициализирует новый экземпляр класса SrgsRuleRef, указывая местоположение внешнего файла грамматики, идентификатор правила, псевдоним строки смыслового словаря и параметры инициализации.

SrgsRuleRef(SrgsRule)

Исходный код:
SrgsRuleRef.cs
Исходный код:
SrgsRuleRef.cs
Исходный код:
SrgsRuleRef.cs

Инициализирует новый экземпляр класса SrgsRuleRef и указывает правило для ссылки.

public:
 SrgsRuleRef(System::Speech::Recognition::SrgsGrammar::SrgsRule ^ rule);
public SrgsRuleRef (System.Speech.Recognition.SrgsGrammar.SrgsRule rule);
new System.Speech.Recognition.SrgsGrammar.SrgsRuleRef : System.Speech.Recognition.SrgsGrammar.SrgsRule -> System.Speech.Recognition.SrgsGrammar.SrgsRuleRef
Public Sub New (rule As SrgsRule)

Параметры

rule
SrgsRule

Объект для ссылки.

Исключения

rule имеет значение null.

Примеры

В следующем примере создается грамматика, которая распознает фразу "Нация, которая выиграла Кубок мира", за которой следует название страны, выигравшей кубок мира. После создания SrgsRule объекта winnerRule и присвоения ему строкового идентификатора WorldCupWinnerв примере добавляется строка "Нация, выиграющая Кубок мира" в правило. С помощью SrgsOneOf объектов в примере создается список европейских стран или регионов и список стран и регионов Южной Америки, а затем каждый из них добавляется в соответствующее правило или ruleEuroperuleSAmerica. Затем в примере создаются ссылки на правила для ruleEurope и ruleSAmerica и их добавление в WorldCupWinner правило.

public void WorldSoccerWinners ()
{

  // Create an SrgsDocument, create a new rule
  // and set its scope to public.
  SrgsDocument document = new SrgsDocument();
  SrgsRule winnerRule = new SrgsRule("WorldCupWinner");
  winnerRule.Scope = SrgsRuleScope.Public;

  // Add the introduction.
  winnerRule.Elements.Add(new SrgsItem("A nation that has won the world cup is: "));

  // Create the rule for the European nations.
  SrgsOneOf oneOfEurope = new SrgsOneOf(new SrgsItem[] {new SrgsItem("England"),
    new SrgsItem("France"), new SrgsItem("Germany"), new SrgsItem("Italy")});
  SrgsRule ruleEurope = (new SrgsRule("EuropeanNations", new SrgsElement[] {oneOfEurope}));

  // Create the rule for the South American nations.
  SrgsOneOf oneOfSAmerica = new SrgsOneOf(new SrgsItem[] {new SrgsItem("Argentina"),
    new SrgsItem("Brazil"), new SrgsItem("Uruguay")});
  SrgsRule ruleSAmerica = (new SrgsRule("SouthAmericanNations", new SrgsElement[] {oneOfSAmerica}));

  // Add references to winnerRule for ruleEurope and ruleSAmerica.
  winnerRule.Elements.Add(new SrgsOneOf(new SrgsItem[] {(new SrgsItem
    (new SrgsRuleRef(ruleEurope))), new SrgsItem(new SrgsRuleRef(ruleSAmerica))}));

  // Add all the rules to the document and make winnerRule
  // the root rule of the document.
  document.Rules.Add(new SrgsRule[] {winnerRule, ruleEurope, ruleSAmerica});
  document.Root = winnerRule;
}

Созданная грамматика имеет следующую форму.

<grammar version="1.0" xml:lang="en-US" xmlns="http://www.w3.org/2001/06/grammar" root="WorldCupWinner">
    <rule id="WorldCupWinner" scope="public">
        <item> A nation that has won the world cup is </item>
        <one-of>
            <item>
                <ruleref uri="#EuropeanNations" />
            </item>
            <item>
                <ruleref uri="#SouthAmericanNations" />
            </item>
        </one-of>
    </rule>
    <rule id="EuropeanNations">
        <one-of>
            <item> England </item>
            <item> France </item>
            <item> Germany </item>
            <item> Italy </item>
        </one-of>
    </rule>
    <rule id="SouthAmericanNations">
        <one-of>
            <item> Argentina </item>
            <item> Brazil </item>
            <item> Uruguay </item>
        </one-of>
    </rule>
</grammar>

Комментарии

Этот конструктор создает ссылку на правило на SrgsRule объект в содержающей грамматике. Чтобы создать ссылку на rule правило для элемента во внешнем файле грамматики, используйте любой из следующих конструкторов:

См. также раздел

Применяется к

SrgsRuleRef(Uri)

Исходный код:
SrgsRuleRef.cs
Исходный код:
SrgsRuleRef.cs
Исходный код:
SrgsRuleRef.cs

Инициализирует новый экземпляр класса SrgsRuleRef и задает расположение внешнего файла грамматики, на который можно сослаться.

public:
 SrgsRuleRef(Uri ^ uri);
public SrgsRuleRef (Uri uri);
new System.Speech.Recognition.SrgsGrammar.SrgsRuleRef : Uri -> System.Speech.Recognition.SrgsGrammar.SrgsRuleRef
Public Sub New (uri As Uri)

Параметры

uri
Uri

Расположение файла грамматики за пределами содержащей грамматики.

Исключения

uri имеет значение null.

Примеры

В следующем примере создается грамматика для приложения, которое возвращает сведения о службе автобусных шаттлов. Первый метод, GrammarUrlForRoute, принимает строку, которая задает маршрут, и добавляет ее к строке, указывающей расположение грамматики. Это указывает определенное правило в этой грамматике. Метод возвращает для Uri этого правила .

Второй метод, CreateGrammarForRoute, создает SrgsDocument элемент с именем grammar со ссылкой на правило, указанной объектом , Uri переданным GrammarUrlForRouteему . Обратите внимание, что переменная с именем _route является членом включающего класса.

private Uri GrammarUrlForRoute(string route)
{
  return new Uri("http://localhost/MyBus/MyBusLocations.grxml#LocationsForRoute" + route);
}

private SrgsDocument CreateGrammarForRoute()
{
  SrgsDocument grammar = new SrgsDocument();
  grammar.Mode = SrgsGrammarMode.Voice;
  SrgsRule rule = new SrgsRule("LocationsForRoute" + _route);
  SrgsRuleRef ruleref = new SrgsRuleRef(GrammarUrlForRoute(_route));

  SrgsSemanticInterpretationTag tag = new SrgsSemanticInterpretationTag ("$.Location = $$");

  rule.Elements.Add(ruleref);
  rule.Elements.Add(tag);
  grammar.Rules.Add(rule);
  grammar.Root = rule;
  return grammar;
}

Примечание

Переменная с именем _route является необъявленной и неопределенной в предыдущем примере. Он должен быть объявлен как String и содержать номер маршрута для определенного маршрута автобуса перед компиляцией и запуском предыдущего примера.

Комментарии

Этот конструктор создает ссылку на правило для внешнего файла грамматики. Универсальный код ресурса (URI) также может содержать идентификатор правила для ссылки, например http://www.contoso.com/ExternalGrammar.grxml#targetRule. uri Если параметр не указывает идентификатор правила, ссылка на правило указывает на корневое правило целевой грамматики. Чтобы создать ссылку на правило на SrgsRule объект в той же грамматике, используйте любой из следующих конструкторов:

См. также раздел

Применяется к

SrgsRuleRef(SrgsRule, String)

Исходный код:
SrgsRuleRef.cs
Исходный код:
SrgsRuleRef.cs
Исходный код:
SrgsRuleRef.cs

Инициализирует новый экземпляр класса SrgsRuleRef определяя правило, на которое необходимо создать ссылку, и строку, содержащую семантический ключ.

public:
 SrgsRuleRef(System::Speech::Recognition::SrgsGrammar::SrgsRule ^ rule, System::String ^ semanticKey);
public SrgsRuleRef (System.Speech.Recognition.SrgsGrammar.SrgsRule rule, string semanticKey);
new System.Speech.Recognition.SrgsGrammar.SrgsRuleRef : System.Speech.Recognition.SrgsGrammar.SrgsRule * string -> System.Speech.Recognition.SrgsGrammar.SrgsRuleRef
Public Sub New (rule As SrgsRule, semanticKey As String)

Параметры

rule
SrgsRule

Объект для ссылки.

semanticKey
String

Семантический ключ.

Примеры

В следующем примере создается грамматика для выбора городов для рейса. В примере создаются два SrgsRuleRef экземпляра, каждый из которых задает семантический ключ. Обе ссылки на правила предназначены для одного и того же SrgsRule объекта с именем cities, но помечают результат распознавания из ссылки на правило с помощью другого семантического ключа. Семантический ключ идентифицирует распознанный город в качестве города вылета или города прибытия для рейса. Обработчик события использует ключи для SpeechRecognized получения значений семантики, созданных с помощью SrgsNameValueTag результата распознавания.

using System;
using System.Speech.Recognition;
using System.Speech.Recognition.SrgsGrammar;

namespace SampleRecognition
{
  class Program
  {
    static void Main(string[] args)

    // Initialize a SpeechRecognitionEngine object.
    {
      using (SpeechRecognitionEngine recognizer =
         new SpeechRecognitionEngine(new System.Globalization.CultureInfo("en-US")))
      {

        // Build a rule with a list of cities, assign a semantic value to each city.
        SrgsItem chi = new SrgsItem("Chicago");
        chi.Add(new SrgsNameValueTag("ORD"));
        SrgsItem bos = new SrgsItem("Boston");
        bos.Add(new SrgsNameValueTag("BOS"));
        SrgsItem mia = new SrgsItem("Miami");
        mia.Add(new SrgsNameValueTag("MIA"));
        SrgsItem dal = new SrgsItem("Dallas");
        dal.Add(new SrgsNameValueTag("DFW"));

        SrgsOneOf cities = new SrgsOneOf(new SrgsItem[] { chi, bos, mia, dal });
        SrgsRule citiesRule = new SrgsRule("flightCities");
        citiesRule.Add(cities);

        // Build the root rule, add rule references to the cities rule.
        SrgsRule flightBooker = new SrgsRule("bookFlight");
        flightBooker.Add(new SrgsItem("I want to fly from"));
        flightBooker.Add(new SrgsRuleRef(citiesRule, "departureCity"));
        flightBooker.Add(new SrgsItem("to"));
        flightBooker.Add(new SrgsRuleRef(citiesRule, "arrivalCity"));

        // Build an SrgsDocument object from the flightBooker rule and add the cities rule.
        SrgsDocument cityChooser = new SrgsDocument(flightBooker);
        cityChooser.Rules.Add(citiesRule);

        // Create a Grammar object from the SrgsDocument and load it to the recognizer.
        Grammar departArrive = new Grammar(cityChooser);
        departArrive.Name = ("Cities Grammar");
        recognizer.LoadGrammarAsync(departArrive);

        // Configure recognizer input.
        recognizer.SetInputToDefaultAudioDevice();

        // Attach a handler for the SpeechRecognized event.
        recognizer.SpeechRecognized +=
          new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized);

        // Start asynchronous recognition.
        recognizer.RecognizeAsync();
        Console.WriteLine("Starting asynchronous recognition...");

        // Keep the console window open.
        Console.ReadLine();
      }
    }

    // Handle the SpeechRecognized event.
    static void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
    {
      Console.WriteLine("Speech recognized: " + e.Result.Text);
      Console.WriteLine();
      Console.WriteLine("Semantic results:");
      Console.WriteLine("  The departure city is: " + e.Result.Semantics["departureCity"].Value);
      Console.WriteLine("  The destination city is: " + e.Result.Semantics["arrivalCity"].Value);
    }
  }
}

Комментарии

Этот конструктор создает ссылку на правило на SrgsRule объект в содержающей грамматике. Чтобы создать ссылку на rule правило для элемента во внешнем файле грамматики, используйте любой из следующих конструкторов:

См. также раздел

Применяется к

SrgsRuleRef(Uri, String)

Исходный код:
SrgsRuleRef.cs
Исходный код:
SrgsRuleRef.cs
Исходный код:
SrgsRuleRef.cs

Инициализирует новый экземпляр класса SrgsRuleRef, указывая расположение внешнего файла грамматики и идентификатор правила, на которые можно сослаться.

public:
 SrgsRuleRef(Uri ^ uri, System::String ^ rule);
public SrgsRuleRef (Uri uri, string rule);
new System.Speech.Recognition.SrgsGrammar.SrgsRuleRef : Uri * string -> System.Speech.Recognition.SrgsGrammar.SrgsRuleRef
Public Sub New (uri As Uri, rule As String)

Параметры

uri
Uri

Расположение файла грамматики за пределами содержащей грамматики.

rule
String

Идентификатор правила, на которое существует ссылки.

Исключения

uri имеет значение null.

rule имеет значение null.

Параметр rule пуст.

Комментарии

Этот конструктор создает ссылку на правило на rule элемент во внешнем файле грамматики. Чтобы создать ссылку на правило на SrgsRule объект в той же грамматике, используйте любой из следующих конструкторов:

См. также раздел

Применяется к

SrgsRuleRef(SrgsRule, String, String)

Исходный код:
SrgsRuleRef.cs
Исходный код:
SrgsRuleRef.cs
Исходный код:
SrgsRuleRef.cs

Инициализирует новый экземпляр класса SrgsRuleRef, указывая правило, на которое можно сослаться, псевдоним строки семантического словаря и параметры инициализации.

public:
 SrgsRuleRef(System::Speech::Recognition::SrgsGrammar::SrgsRule ^ rule, System::String ^ semanticKey, System::String ^ parameters);
public SrgsRuleRef (System.Speech.Recognition.SrgsGrammar.SrgsRule rule, string semanticKey, string parameters);
new System.Speech.Recognition.SrgsGrammar.SrgsRuleRef : System.Speech.Recognition.SrgsGrammar.SrgsRule * string * string -> System.Speech.Recognition.SrgsGrammar.SrgsRuleRef
Public Sub New (rule As SrgsRule, semanticKey As String, parameters As String)

Параметры

rule
SrgsRule

Объект для ссылки.

semanticKey
String

Семантический ключ.

parameters
String

Параметры инициализации для объекта SrgsRuleRef.

Комментарии

Этот конструктор создает ссылку на правило на SrgsRule объект в содержающей грамматике. Чтобы создать ссылку на rule правило для элемента во внешнем файле грамматики, используйте любой из следующих конструкторов:

См. также раздел

Применяется к

SrgsRuleRef(Uri, String, String)

Исходный код:
SrgsRuleRef.cs
Исходный код:
SrgsRuleRef.cs
Исходный код:
SrgsRuleRef.cs

Инициализирует новый экземпляр класса SrgsRuleRef, указывая расположение внешнего файла грамматики и идентификатор правила, а также псевдоним строки семантического словаря.

public:
 SrgsRuleRef(Uri ^ uri, System::String ^ rule, System::String ^ semanticKey);
public SrgsRuleRef (Uri uri, string rule, string semanticKey);
new System.Speech.Recognition.SrgsGrammar.SrgsRuleRef : Uri * string * string -> System.Speech.Recognition.SrgsGrammar.SrgsRuleRef
Public Sub New (uri As Uri, rule As String, semanticKey As String)

Параметры

uri
Uri

Расположение файла грамматики за пределами содержащей грамматики.

rule
String

Идентификатор правила, на которое существует ссылки.

semanticKey
String

Строка псевдонима для смыслового словаря.

Исключения

uri имеет значение null.

semanticKey имеет значение null.

Параметр semanticKey пуст.

Комментарии

Этот конструктор создает ссылку на правило на rule элемент во внешнем файле грамматики. Чтобы создать ссылку на правило на SrgsRule объект в той же грамматике, используйте любой из следующих конструкторов:

См. также раздел

Применяется к

SrgsRuleRef(Uri, String, String, String)

Исходный код:
SrgsRuleRef.cs
Исходный код:
SrgsRuleRef.cs
Исходный код:
SrgsRuleRef.cs

Инициализирует новый экземпляр класса SrgsRuleRef, указывая местоположение внешнего файла грамматики, идентификатор правила, псевдоним строки смыслового словаря и параметры инициализации.

public:
 SrgsRuleRef(Uri ^ uri, System::String ^ rule, System::String ^ semanticKey, System::String ^ parameters);
public SrgsRuleRef (Uri uri, string rule, string semanticKey, string parameters);
new System.Speech.Recognition.SrgsGrammar.SrgsRuleRef : Uri * string * string * string -> System.Speech.Recognition.SrgsGrammar.SrgsRuleRef
Public Sub New (uri As Uri, rule As String, semanticKey As String, parameters As String)

Параметры

uri
Uri

Расположение файла грамматики за пределами содержащей грамматики.

rule
String

Идентификатор правила, на которое существует ссылки.

semanticKey
String

Семантический ключ.

parameters
String

Параметры инициализации для объекта SrgsRuleRef.

Комментарии

Этот конструктор создает ссылку на правило на rule элемент во внешнем файле грамматики. Чтобы создать ссылку на правило на SrgsRule объект в той же грамматике, используйте любой из следующих конструкторов:

См. также раздел

Применяется к