Share via


IDialog<TResult> Interface

Definition

A IDialog<TResult> is a suspendable conversational process that produces a result of type TResult.

public interface IDialog<out TResult>
type IDialog<'Result> = interface
Public Interface IDialog(Of Out TResult)

Type Parameters

TResult

The result type.

This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics.
Derived

Remarks

Dialogs can call child dialogs or send messages to a user. Dialogs are suspended when waiting for a message from the user to the bot. Dialogs are resumed when the bot receives a message from the user.

Methods

StartAsync(IDialogContext)

The start of the code that represents the conversational dialog.

Extension Methods

Catch<T>(IDialog<T>, Func<IDialog<T>,Exception,IDialog<T>>)

When the antecedent IDialog<TResult> has completed, catch and handle any exceptions.

Catch<T,E>(IDialog<T>, Func<IDialog<T>,E,IDialog<T>>)

When the antecedent IDialog<TResult> has completed, catch and handle any exceptions of type E.

ContinueWith<T,R>(IDialog<T>, Chain.Continuation<T,R>)

When the antecedent IDialog<TResult> has completed, execute the continuation to produce the next IDialog<TResult>.

DefaultIfException<T>(IDialog<T>)

When the antecedent IDialog<TResult> has completed, stop the propagation of Exception.

DefaultIfException<T,E>(IDialog<T>)

When the antecedent IDialog<TResult> has completed, stop the propagation of an exception of E.

Do<T>(IDialog<T>, Func<IBotContext,IAwaitable<T>,Task>)

Execute a side-effect after a IDialog<TResult> completes.

Loop<T>(IDialog<T>)

Loop the IDialog<TResult> forever.

PostEvent<T,E>(IDialog<T>, E)

When the antecedent IDialog<TResult> has completed, post the item to the event queue.

PostToUser<T>(IDialog<T>)

Post to the user the result of a IDialog<TResult>.

Select<T,R>(IDialog<T>, Func<T,R>)

When the antecedent IDialog<TResult> has completed, project the result into a new IDialog<TResult>.

SelectMany<T,C,R>(IDialog<T>, Func<T,IDialog<C>>, Func<T,C,R>)

When the antecedent IDialog<TResult> has completed, execute the next IDialog<TResult>, and use the projection to combine the results.

Switch<T,R>(IDialog<T>, ICase<T,R>[])

When the antecedent IDialog<TResult> has completed, go through each ICase<T,R> and run the ContextualSelector<T,R>" of the first ICase<T,R> that the returned value by the antecedent dialog satisfies.

Then<T,R>(IDialog<T>, Func<IBotContext,IAwaitable<T>,Task<R>>)

Execute an action after the IDialog<TResult> completes.

Void<T>(IDialog<T>, IDialogStack)

Call the voided IDialog<TResult>, ignore the result, then restart the original dialog wait.

Void<T,R>(IDialog<T>)

Call the voided IDialog<TResult>, ignore the result, then restart the original dialog wait.

WaitToBot<T>(IDialog<T>)

Post to the chain the message to the bot after the antecedent completes.

Where<T>(IDialog<T>, Func<T,Boolean>)

When the antecedent IDialog<TResult> has completed, evaluate the predicate and decide whether to continue.

While<T>(IDialog<T>, Func<T,IDialog<Boolean>>, Func<T,IDialog<T>>)

Create a IDialog<TResult> that represents a while loop.

WithScorable<T,Item,Score>(IDialog<T>, IScorable<Item,Score>)

Decorate a dialog with a scorable, so that a scorable can participate on the dialog stack.

Applies to